若有下列定义:char c[3],*pc=c; 则对c数组元素地址的正确引用是________。 A)&c[3] B)pc+2 C)c++ D)&

菜鸟求助,谢谢!
仔细点就好啦。。。不知道怎么选B 啊啊啊啊~~~ “pc+2”是什么意思?

首先,得明确本题要求回答的是
"对c数组元素地址的正确引用"
是对直址的引用,不是对数元素本身!!!!!
所以选B答案.
A的话,可以或者说只能直接用 c[3]
B.pc本来指向c[0]位置.pc+2,即按类型指向+2个位址.结果应该是c[2].
下面是例程:
#include<stdio.h>
void main(){

char c[3];
char *pc=c;
c[0]=1;
c[2]=2;
c[3]=3;
printf("%d",*pc+2);

}
结果输出会是 c[2],即3
//附BCC++5.5编译信息
--------------------配置: bcc5.5 - CUI Debug, 编译器类型: Borland C++ Compiler--------------------

检查文件依赖性...
正在编译 C:\Users\fallx\Documents\C-Free\Temp\未命名1.cpp...
Borland C++ 5.6.4 for Win32 Copyright (c) 1993, 2002 Borland
正在连接...
Turbo Incremental Link 5.96 Copyright (c) 1997-2008 CodeGear

完成构建 未命名1: 0 个错误, 0 个警告
生成 C:\Users\fallx\Documents\C-Free\Temp\未命名1.exe

//
C选择吗,会因为c这个符号本身指向不明确而出现c++即加一个相应类型位址后所指更加不明确的情况出现.

这纯粹是个人理解.如果有错漏,请不吝赐教!谢谢
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-01-08
首先告诉你,这道题选C。
对于A,本来如果题中写成&c[2]那就是正确的,可惜定义时c[3]只有c[0]、 c[1]、 c[2],所以A错;
对于B,c既是数组名称也是数组首地址,而从题中知道*pc=c,所以pc是指向指针的指针,也就是一个char **类型,所以pc+2所代表的并不是c[3],只有*pc+2才能代表c[3],所以B错;
对于C,正确,c++,所代表的就是首地址+1,也就是指向c[1]的地址;
对于D,错误。
第2个回答  2011-01-08
Pc前面的*只是表明其为指针类型,pc=c是把c[0]的地址给pc,所以pc++其实是c[1]的地址
第3个回答  2011-01-08
选b
ps:本人目前的职业是网游服务器端程序员
相似回答