17、设有如下定义: char *aa[2]={“abcd”,“ABCD”}; 则以下说法中正确

 17、设有如下定义: char *aa[2]={“abcd”,“ABCD”}; 则以下说法中正确的是( )。
  A)aa数组成元素的值分别是“abcd”和ABCD“
  B)aa是指针变量,它指向含有两个数组元素的字符型一维数组
  C)aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址
  D)aa数组的两个元素中各自存放了字符‘a’和‘A’的地址
为什么?

应该选D
这种定义方式:char * aa[2]定义的是一个指针数组,数组的成员是字符指针。
在这里,数组中的两个字符指针,分别指向了常量字符串"abcd"和"ABCD",换句话说,这两个指针的值就是这两个字符串的首地址。

A.数组中元素的值不是字符串,而是字符串的首地址
B.aa是指针数组,不是指针变量
C.因为字符串隐含的有'\0'字符,作为结束,所以应该是含有5个字符的一维数组。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-13
char* 类型的数组指的是每个元素都是 char* 指针 char * 指针是指向字符类型的 所以 aa数组的两个元素各自存放了字符'a' 和 ‘A’的地址

A)答案不对 aa数组元素是 两个char* 字符类型的指针
B) aa的元素类型是字符型指针 不是 字符型一维数组
C)同B
D)是正确的本回答被提问者采纳
第2个回答  2014-12-25
D
因为 char *aa[2]; 定义的是指针数组,[] 的优化级比 * 高,即是 char *(aa[2]); 表明 aa[0], aa[1] 里存放的是指针,指针存放的是地址,对字符串来说,就是存放的串首第一个字符的地址。追问

可答案是D

追答

确实是D,刚才看错了,把 C 看成是字符串的首地址。如果是定义的 char (*aa)[2]; 才是选C

第3个回答  2014-12-25
正确答案是C。因为aa数组本身就是指向字符的指针数组。追问

可答案是D啊

追答

对不起,笔误打错了。

第4个回答  2021-06-01
正确答案是D. 书上都有的
相似回答