当前位置:首页 » 编程语言 » c语言的题

c语言的题

发布时间: 2025-03-13 12:45:01

① C语言题目!!

D是错的,图片中的下面也有文字说明。下面看看我的详细解释:
A选项:
char *ch; ch="abc"; //ch是个指针,"abc"是一个字符串常量,常量是在内存中开辟的一个空间保存的,这个空间是只读的。语句中把ch指针指向这个常量的赋值是完全正确的。下面一段代码演示"abc"是只读常量:
void main()
{
char *ch; ch="abc";
*ch='d'; //程序可以编译链接通过,但是运行到这里程序会非法操作,出现系统提示,内存只能读
}
B选项:
char ch[]={'a','b','c'}; //这样赋值也没错,程序也能编译通过,但是你只能把ch当一个字符数组使用,而不能把它当字符串来使用,因为字符串必须用0结尾,你硬是要把它当字符串用,行,但是会出现很多不可意料的事情,比如printf(ch);屏幕上就可能出现:abc后面一堆其它的东西。这个选项错,是因为题目是问“能给字符串正确赋值”的语句,准确说这是给字符数组赋值而非字符串赋值。
C选项:
char ch[3]="abc";//这是字符串赋值语句,在B中也说了,字符串必须0结尾,但是空间只有3,放入了abc再放不下0了,空间不够,编译就不会通过,所以错了,char ch[4]="abc";就没问题。
D选项:
char ch[4];ch="abc";//ch空间够了,但是这是2条语句,char ch[4];已经开辟了空间,ch指向这个大小为4的空间,ch可以理解为一个指针,这个指针和这个4字节的空间捆绑在一起的,对应关系。ch="abc";同A要把这个指针重新指到另外一个字符串常量,那原先4字节空间就无主了,这编译怎么能让你通过。这是比较通俗的解释。正规的解释是:ch[4]是一个字符数组,字符串常量是不可以这样直接赋值给字符数组。除非是char ch[4]; strcpy(ch,"abc");这样拷贝过去才没问题。
解释不好,有问题可追问,谢谢采纳

热点内容
服务器电源改成家用电脑 发布:2025-09-24 04:50:06 浏览:586
python返回post 发布:2025-09-24 04:42:37 浏览:390
c语言链表学生信息 发布:2025-09-24 04:42:36 浏览:787
顺序表的优点存储空间 发布:2025-09-24 04:27:51 浏览:674
为什么安卓能连上无线苹果不能 发布:2025-09-24 04:08:06 浏览:28
android表格绘制 发布:2025-09-24 03:24:03 浏览:326
fatfs源码 发布:2025-09-24 03:15:11 浏览:333
easydarwin服务器搭建 发布:2025-09-24 03:15:10 浏览:352
南充存储服务器地址怎么找 发布:2025-09-24 02:58:24 浏览:236
联想24针服务器开关针脚怎么接 发布:2025-09-24 02:56:08 浏览:348