| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 980 人关注过本帖
标题:[求助] 帮忙做一个选择题
只看楼主 加入收藏
ak47my
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:229
专家分:0
注 册:2005-12-2
收藏
得分:0 
以下是引用Prince_bule在2006-1-4 15:48:00的发言:

ABC是正确的,D是错误的,S是指针变量,只能存放地址.

我挺你。。。


提问:回答: 不提问怎么回答? 提问不清楚怎么回答?
2006-01-04 16:32
luoshun
Rank: 1
等 级:新手上路
帖 子:94
专家分:0
注 册:2005-11-17
收藏
得分:0 
被你们说晕了,我都不知道到底哪是正确的了!!!
2006-01-04 16:54
303770957
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:838
专家分:2125
注 册:2005-9-10
收藏
得分:0 
我觉得应该没有答案理由是:四个选项都不是语句少了分号。这是区分是不是语句的主要标志!

♂ 死后定当长眠,生前何须久睡。♀
2006-01-04 17:46
zyn0329
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-1-4
收藏
得分:0 
A,B是对的
C错,因为S是指针,指针未被指定某一个内存单元前是不能用的。
char a[5],*s=a;
s="ABCDE";
这样就可能用啦。

D错,S是指针,它本来就是一个地址,不需要加&。

2006-01-04 19:27
ryxhh
Rank: 1
等 级:新手上路
威 望:1
帖 子:63
专家分:0
注 册:2005-12-18
收藏
得分:0 

下列能正确进行n字符赋值的操作的语句是()

a char s[5]={"ABCDE"}

b char s[5]={'a','b','c','d','e'}

c char *s; s="ABCDEF"

d char *s; scanf("%s",&s)

帮忙解释一下错误答案的原因!!!


a中将s设为字符串,有5个字符,但加上结尾'\0',应为6个长,所以错
b中s为字符数组,定义时初始化是可以的,所以是对的
c中s为字符指针,照理论,指针末指向就赋值会报错,但这种形式在实际编译过程中,可以通过
d是一个明显的错误,s本身就是地址,所以scanf("%s",&s)中,不要&

建议,如果是单选,选b,多选,选b ,c

[此贴子已经被作者于2006-1-4 20:16:00编辑过]


2006-01-04 20:06
yylcel
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2005-12-10
收藏
得分:0 
以下是引用ryxhh在2006-1-4 20:06:00的发言:

下列能正确进行n字符赋值的操作的语句是()

a char s[5]={"ABCDE"}

b char s[5]={'a','b','c','d','e'}

c char *s; s="ABCDEF"

d char *s; scanf("%s",&s)

帮忙解释一下错误答案的原因!!!


a中将s设为字符串,有5个字符,但加上结尾'\0',应为6个长,所以错
b中s为字符数组,定义时初始化是可以的,所以是对的
c中s为字符指针,照理论,指针末指向就赋值会报错,但这种形式在实际编译过程中,可以通过
d是一个明显的错误,s本身就是地址,所以scanf("%s",&s)中,不要&

建议,如果是单选,选b,多选,选b ,c

ryxhh说的没错.c中指针S其实是指向"ABCDEF"的首地址

2006-01-07 11:47
lordair
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2006-1-7
收藏
得分:0 

B


2006-01-07 14:40
spp509
Rank: 1
等 级:新手上路
威 望:1
帖 子:98
专家分:0
注 册:2005-11-23
收藏
得分:0 

我觉得A和B的问题一样,都会越界,因为没\0;

惟独C是正确的,因为s指向的是常量区,就是字符串池了,没有问题;

D的问题大家已说的很清楚了


一听就懂,一看就会,一做就错……
2006-01-07 14:43
wanglff
Rank: 2
等 级:新手上路
威 望:5
帖 子:375
专家分:0
注 册:2005-12-21
收藏
得分:0 
楼上解释的不错啊~~

自强不息:)
2006-01-07 17:08
cainiaoyihao
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2005-12-29
收藏
得分:0 
以下是引用我是一根葱在2005-12-31 22:53:00的发言:

a char s[5]={"ABCDE"}

因为字符串数组后面会自动加一个结束符'\0',数组的原数应比在实际的字符个数上加1

b char s[5]={'a','b','c','d','e'}

这个是对的因为赐值是字符不是字符串。

c char *s; s="ABCDEF"

这是一个字符指针指向一个没有名子的字符串。我们应记住不管什么时候s存贮的是"ABCDEF"的总地址而不是字符串"ABCDEF"

d char *s; scanf("%s",&s)
指针不管什么时候都只能存贮地址。指针在没有定义指向的时候是无义意的。

说的很明白c 答案s指向的是abcd字符串的首地址不指向单个字符

2006-01-07 19:24
快速回复:[求助] 帮忙做一个选择题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021568 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved