首页 > 试题广场 > 设有下面的程序段:  char s[ ]=”china”;
[单选题]
设有下面的程序段:
 char s[ ]=”china”; char *p; p=s; 
则下列叙述中正确的是( )。
  • s 和 p 完全相同
  • 数组 s 中的内容和指针变量 p 中的内容相等
  • s 数组长度和 p 所指向的字符串长度相等
  • *p 和 s[0]值相等
推荐
D
根据题目:p=s;将指针P指向数组S的内存首地址
  • p申请的内存空间存放的是s首地址的内存空间,而s的连续内存空间存放的china,所以A错误
  • 数组s的内容是china,而指针p内容为s的地址,所以B错误
  • s数组的长度为6(包含结束符'\0'),p所指向的字符串长度为5。所以C错误
编辑于 2019-09-23 14:06:53 回复(0)
选D,
A错,*p为一个指针,指针和字符串是不同的概念;
B错,数组s的内容是赋的值“china”,而p是char 指针,应该指向char型对象的地址,即s的地址
C不确定,但听起来就有点像错的,有可能是前面说的s数组的长度为6(包含结束符'\0'),p所指向的字符串长度为5,也可能是p指向的只是一个字符,长度是1??
D肯定对啦,*p是取地址指向的内容----char ‘c’,s[0]是指它的第一个字符‘c’。
发表于 2019-09-22 20:00:57 回复(0)
选D
1、首先明确的是两者都是指针,本质上两者是一样的东西,但代表的不一样。
2、s是作为一个数组的起始地址,仅仅保留了数据的起始地址即s【0】;为此s=p也就是说p也会保留s【0】的地址;故*p=s【0】
发表于 2019-09-22 16:21:48 回复(0)

参考答案:D
解析:*p为一个指针,指针和字符串是不同的概念,但是指针可以代替这个字符串来使用,故(*p)=(*s)=s[0]

发表于 2019-09-21 00:06:13 回复(0)