指针数组为什么可以直接指向字符串常量?
答案:2 悬赏:60
解决时间 2021-12-29 01:10
- 提问者网友:温柔又任性
- 2021-12-28 01:57
例如char *a[3]={"hello","happy","switch"},这样定义无错,但若是这样定义,例如*(a[2]+2)就是一个常量(表示第二个字符串的第二个字符‘a'),而存放这个字符是需要存储空间(假设变量名为x)的吧?这个存储空间我们不知道啊,只知道a[2]+2是这个存储空间的地址(&x),这样的话作为一个常量,不能直接赋值(*(a[2]+2='h')),指针数组直接指向每个字符串的首地址,而不知道字符串中每个字符的存储空间的名字,难道这存储空间是随机的吗?
最佳答案
- 二级知识专家网友:浪女动了心
- 2021-12-28 02:45
char *a[3]={"hello","happy","switch"} 是一个指针数组,存放了3个char*指针,这三个指针分别指向了三个字符串常量。C语言中字符串常量所占空间是在内存的常量区中,定义后即存在,由系统自动回收。常量区内的数据不允许你手动修改,这就是(*(a[2]+2='h'))失败的原因。
全部回答
- 1楼网友:短发女王川岛琦
- 2021-12-28 04:09
c语言不是说的很清楚了嘛,c语言中的字符串就是字符数组.所以这个和用int型的指针指向int数组是一样的
第二个我猜只要接收的是指向字符的指针,就以字符串的形式显示
c++里面不是有重载嘛,不同类型的数据都是以不同的方式处理的
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯