木雕刻精品蝉步骤图片:C 的数组问题

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/11 03:31:07
设有如下定义:
char *aa[2]={"abcd","ABCD"};
A)aa数组中元素的值分别是{"abcd","ABCD"};
B)aa是指针变量,它指向含有两个数组元素的字符型一维数组。
C)aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址。
D)aa数组的两个元素中各自存放了字符'a'和'A'的地址。

D。
aa是个长度为2的指针数组,两个指针分别指向字符串"abcd"和"ABCD"。
所以:
A:明显错了。
B:aa是数组,不是一个变量
C:字符串的结束符是不显示的,但也算在字符串实际包含的字符范围内,所以这两个字符串实际长为5。

B

B
char * aa[2]是定义了一个指向字符的指针数组,有两个元素!
初始化时两个元素各自指向两个字符串的首地址!然而它们的长度是4占用5个字节,长度不把\0包括在内的!strlen

C

D
A很明显错了
B把aa看作一个指针变量,aa应该是个数组
Caa数组内的2个元素所存放的字符串含有5个字符

这个定义可以看成是:
typedef char *ch;//定义了字符指针的一个别名
ch aa[2];//定义了一个2维数组,其内存放的是字符指针
aa[0]="abcd";//数组内第1个元素赋值,存放的是字符串"abcd"的首地址,也就是字符'a'的地址。下同。
aa[1]="ABCD";

C
aa是一指针数组
含有两个指针,第一个指向abcd
第二个指向ABCD