ZTQ 发表于 2018-8-5 17:47:01

字符指针

初学C语言   指针那里有些问题
用指针变量储存字符串不是相当于 先用数组储存字符串,再用指针指向这个字符数组吗?
为什么小甲鱼老师说用指针变量储存字符串和用数组储存字符串在内存中的储存位置不同?

无符号整形 发表于 2018-8-5 17:53:02

确实不同啊。
指针是不能存储字符串的,它只能指向一个字符串。
指针本身储存的位置是和它指向的地方不同的。

ZTQ 发表于 2018-8-5 18:01:46

那这两种方式 字符串应该都是储存在字符数组里的啊
那不是都在同一个内存分区里吗
但小甲鱼老师说用指针储存字符串时会把它放到常量存储区里面

claws0n 发表于 2018-8-5 18:38:19

其实不是很了解你的疑惑。如果同时有字符串与数组被定义,或者说任何的变量被定义,那么它们在内存的位置当然不一样,跟指针没有关系。

char a = {'1','2','3','4','\0'}   ==    char a = {"1234"}
int a =

字符串的本质是一个数组,被包装起来而已。至于指针的用法,作用在数组或字符串都是一样的。

claws0n 发表于 2018-8-5 18:50:55

ZTQ 发表于 2018-8-5 18:01
那这两种方式 字符串应该都是储存在字符数组里的啊
那不是都在同一个内存分区里吗
但小甲鱼老师说用指针 ...

不要想得太复杂,就是【栈】与【堆】而已。什么宏定义、全局变量等,都是在【堆】,慢慢往上堆叠。
我上面的例子不太好,应该是 char a,int b;如果两个变量被定义了,就会分配属于自己的内存块,两者部冲突~

谦虚求学 发表于 2018-8-6 11:22:49

指针相当于指向一个内存地址,而数组相当于在内存空间开辟一小段空间存续数据,两者概念是不同的。
页: [1]
查看完整版本: 字符指针