首页 > 试题广场 >

设有下面的程序段: 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)
字符数组s,其存储内容为'c','h','i','n','a','\0',数据在栈区。
字符指针p=s
选项A:s里存内容("china\0"),p里存的是s的首地址。
选项B:参考选项A。
选项C:s数组长度为6,包括'\0',而字符串长度为5,不包括'\0'。
选项D:正确。
(PS.画的图好像没啥用)
发表于 2020-09-08 15:21:13 回复(1)
选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)
s数组的长度为6(包含结束符'\0'),p所指向的字符串长度为5。
指针不包括结束符号\0
发表于 2020-04-08 10:17:00 回复(0)
指针存放地址,数组存放值
发表于 2020-02-16 22:23:40 回复(0)
选D
1、首先明确的是两者都是指针,本质上两者是一样的东西,但代表的不一样。
2、s是作为一个数组的起始地址,仅仅保留了数据的起始地址即s【0】;为此s=p也就是说p也会保留s【0】的地址;故*p=s【0】
发表于 2019-09-22 16:21:48 回复(0)
A. s是数组名,const指针,不可变;p是可变指针 B. s字符数组的内容是"china\0";p字符指针中的内容是'c'的地址,指向的内容为'c' C. p字符指针根本流不指向字符串
编辑于 2019-12-02 09:58:54 回复(0)
一维数组名是个指针常量,存放的是一维数组第一个元素的地址,,s相当于&s[0]
p=s相当于p=&s[0],故*p=s[0]
发表于 2020-07-30 19:52:53 回复(0)

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

发表于 2019-09-21 00:06:13 回复(0)
题目是将指针p指向了数组s s的内容是五个字符串,p的内容是数组的位置 s数组的长度是六个字符串,包含了/0,p指向的字符串的长度为五个字符串
编辑于 2021-07-05 07:35:33 回复(0)
感觉c有点像文字游戏,c中说的是p指向的字符串,单单指的就是"china"这个串,不能和数组中的”china\0”理解为一样的。
发表于 2023-09-04 11:43:50 回复(0)
p=s,就是指针p指向数组的首地址s[0];
*是取值符,*p=s[0]的值,这两个的表示是一样的意思

发表于 2023-01-17 23:28:55 回复(0)
区分数组长度和字符串长度的概念
发表于 2022-10-24 01:09:15 回复(0)
数组长度为6,包括结束符“\0”,而字符串长度为5,不包括“\0”
发表于 2023-06-26 21:48:49 回复(0)
s是常量,存的是值;
p是指针变量,存的是地址;
发表于 2020-12-15 14:54:28 回复(0)