c语言问题。。。有点不懂,请指教

2025-03-24 06:20:26
推荐回答(3个)
回答1:

char * pcStr = ”12345“这里“12345”是常量,存储在常量存储区,是不可更改的。

pcStr是指向该常量的指针,而pcStr[0] = 'A'是要改变该常量的第一个字符为‘A',自然会出错。

而char acStr[] = ”12345“是一个数组,数组里面存储的数据是“12345”,存储在堆栈上,是可以更改的。

所以使用pcStr[0] = 'A'改变其数组中第一个字符,不会报错

回答2:

char * pcStr实际上定义一个指针,不能直接赋值初始化,而是需要使用类似于malloc的函数进行空间分配,而char acStr[]定义的是一个数组,因此可以直接用"12345"分配初始值,至于pcStr[0]='A',本意不知道干什么,他可以直接赋值 A2345,但是效果是很清楚的,就是把第一个字符换成A

回答3:

pcStr[0] = 'A'这个pcStr是数组,后面必须是大于0的数,这里写0,表示数组中有0个元素。,所以不行。