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

2025-06-21 14:42:59
推荐回答(5个)
回答1:

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

A.数组中元素的值不是字符串,而是字符串的首地址
B.aa是指针数组,不是指针变量
C.因为字符串隐含的有'\0'字符,作为结束,所以应该是含有5个字符的一维数组。

回答2:

char* 类型的数组指的是每个元素都是 char* 指针 char * 指针是指向字符类型的 所以 aa数组的两个元素各自存放了字符'a' 和 ‘A’的地址

A)答案不对 aa数组元素是 两个char* 字符类型的指针
B) aa的元素类型是字符型指针 不是 字符型一维数组
C)同B
D)是正确的

回答3:

D
因为 char *aa[2]; 定义的是指针数组,[] 的优化级比 * 高,即是 char *(aa[2]); 表明 aa[0], aa[1] 里存放的是指针,指针存放的是地址,对字符串来说,就是存放的串首第一个字符的地址。

回答4:

正确答案是C。因为aa数组本身就是指向字符的指针数组。

回答5:

正确答案是D. 书上都有的