当前位置: 代码迷 >> C语言 >> 这个问题!!!!!
  详细解决方案

这个问题!!!!!

热度:128   发布时间:2007-11-29 20:57:20.0
这个问题!!!!!
假设已定义char a[10]和char  *p=a, 下面的赋值语句中
A.a[10]="Turbo C"
B.a="Turbo C"
C.*p="Turbo C"
D.p="Turbo C"
这4个有什么问题呢
----------------解决方案--------------------------------------------------------
我个人觉得好像只有3有问题吧,其它的应该通得过的
----------------解决方案--------------------------------------------------------
字符数组中只能存字符,a和c存了字符串,b和d就错的更远了,a[10]中的a和char  *p=a中的p可以看作是一个地址,这种赋值当然是错的了
----------------解决方案--------------------------------------------------------
a,b,c都错,只有d对了
其他的我都同意楼上的,只是觉得对指针p的解释有点不对..
d是指针,并不会因为把地址赋给它就变成地址,指针的特性不会变,还可以把其他的地址再一次赋给它.d就相当于把字符串的地址重新给了指针p.
----------------解决方案--------------------------------------------------------
只有A对,其他的全错
----------------解决方案--------------------------------------------------------
看你姑娘很漂亮,给个答案
A:错,一下标越界;二是不能给字符型数组元素赋字符串。
B:错,数组定义后,不能给数组整体赋值,此时a是地址常量。
C:错,*p为引用数组的第一个元素,犯了A的第二点。
D:能正确赋值,但不是给数组A赋值,重新指定p指向了字符串的地址。

指针是有点迷惑人啊
----------------解决方案--------------------------------------------------------
原帖由 [bold][underline]linx218[/underline][/bold] 于 2007-11-30 12:07 发表 [url=http://bbs.bc-cn.net/redirect.php?goto=findpost&pid=1123987&ptid=189391][/url]
A:错,一下标越界;二是不能给字符型数组元素赋字符串。
B:错,数组定义后,不能给数组整体赋值,此时a是地址常量。
C:错,*p为引用数组的第一个元素,犯了A的第二点。
D:能正确赋值,但不是给数组A赋值,重新指定p指向了字符串的地址。

...

----------------解决方案--------------------------------------------------------
6L回答的好~学习了~
那第四个
指针是指向了该字符串的的第一个字符的地址吗~
----------------解决方案--------------------------------------------------------
6楼的大哥谢谢你的回答啊

----------------解决方案--------------------------------------------------------
a[10]="Turbo C";          invalid conversion from `const char*' to `char'
a="Turbo C";                incompatible types in assignment of `const char[8]' to `char[10]'
*p="Turbo C";              invalid conversion from `const char*' to `char'
----------------解决方案--------------------------------------------------------
  相关解决方案