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编辑过]
----------------解决方案--------------------------------------------------------
下列能正确进行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的问题大家已说的很清楚了
----------------解决方案--------------------------------------------------------
楼上解释的不错啊~~
----------------解决方案--------------------------------------------------------
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字符串的首地址不指向单个字符
----------------解决方案--------------------------------------------------------