当前位置: 代码迷 >> C语言 >> [求助] 帮忙做一个选择题
  详细解决方案

[求助] 帮忙做一个选择题

热度:110   发布时间:2006-01-04 16:32:00.0
以下是引用Prince_bule在2006-1-4 15:48:00的发言:

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

我挺你。。。


----------------解决方案--------------------------------------------------------
被你们说晕了,我都不知道到底哪是正确的了!!!
----------------解决方案--------------------------------------------------------
我觉得应该没有答案理由是:四个选项都不是语句少了分号。这是区分是不是语句的主要标志!
----------------解决方案--------------------------------------------------------
A,B是对的
C错,因为S是指针,指针未被指定某一个内存单元前是不能用的。
char a[5],*s=a;
s="ABCDE";
这样就可能用啦。

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

下列能正确进行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编辑过]


----------------解决方案--------------------------------------------------------
以下是引用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"的首地址


----------------解决方案--------------------------------------------------------

B


----------------解决方案--------------------------------------------------------

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

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

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


----------------解决方案--------------------------------------------------------
楼上解释的不错啊~~
----------------解决方案--------------------------------------------------------
以下是引用我是一根葱在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字符串的首地址不指向单个字符


----------------解决方案--------------------------------------------------------
  相关解决方案