问题
单项选择题
有以下程序段:
char s[]="china"; char *p; p=s;
则以下叙述中正确的是 (40) 。
A.数组s中的内容和指针变量p中的内容相等
B.s和p完全相同
C.sizeof(s)与sizeof(p)结果相同
D.*p和s[0]相等
答案
参考答案:D
解析:
[分析]:
本题考查对数组和指针的理解。
题目中给出的程序段首先是将字符串"china"放进数组s中,接下来声明了一个字符型指针变量p,并使指针变量p指向数组s。指针变量p中存放的是数组s的首地址,而数组s中存放的是字符串"china",内容根本不同;数组名s是一个常量,表示的是数组首元素在内存中的首地址,虽然指针变量p中存放的也是数组s的首地址,但不完全相同;sizeof( )函数的作用是求参数的长度,由于数组s中的内容和指针变量p中的内容不同,用函数sizeof( )求得的结果肯定不同。*p表示取数组的第一个元素,而s[0]也表示取数组的第一个元素,因此相等。