c语言题目

额是新手,求高手详解,非常感谢!!!
设有以下定义语句:char str[20]="Program",*p;
p=str;则以下叙述正确的是(A)*p与str[0]中的值相等(B)str与p的类型完全相同(C)str数组长度和p所指向的字符串长度相等(D)数组str中存放的内容和指针变量p中存放的内容相同

答案是A,*p的值是字符'P',str[0]的值也是字符'P'
B的话,str只是一个指针常量,p是指针变量
C的话,str的长度是20,p指向的字符串只是"Program",长度只是7+1
D的话,str数组的内容是20个字符(Program后面的字符是空字符),而p指针的内容是str[0]的地址值而已
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-01-07
正确的是:
A:因为*p和str[0]都是‘P’
C:使用strlen计算两者的长度完全一致,都是7;原因是这个内存地址存放的是Program+'\0'
错误的是:
B:一个是指向字符的指针变量,另一个是常量。
D:str存放的是数组,包括起始地址和长度信息;p是指针变量存放的是机器的字长,32位机器就是4个字节,64位机器就是8个字节