标签:存储 字面 地址 数组 字符串 指针
在程序中定义的字符串无论是对于字符串指针还是字符串数组,都会将字符串放到静态存储区
在程序开始运行的时候,对于数组来说,先分配内存空间,然后静态存储区中的字符串字面量将拷贝到字符串数组中,而对于字符串指针来说,这个指针将直接指向静态存储区中的字符串常量地址,而且对于同一个字符串字面量,编译器只会在静态存储中存储一次。下面我们打印一下字符串字面量的地址。
对于双引号引起来的字符串字面量就是一个地址,可以看到str指向的地址和"hello world"的地址是相同的,都是在静态存储区中的一个形同的地址,而对于数组来说,由于是重新在内存上开辟了一个地方,所以也就是说字符串的数组是与其他两个不同的。
字符串字面量是一个常量,也就是说他是const修饰的,也就是说任何指向字符串字面量的指针都无法通过解引用来改变字符串字面量的值,他修改的结果将会是未定义的,换句话说就是不能进行*str='q'这种操作,但是数组的元素是变量,可以改变(array[2]='q' ✅)。
同时array是一个地址常量,他是一个不能修改的,不能当作左值。但是str是一个指针变量,它可以当作左值,可以进行自增或者自减操作。
标签:存储,
字面,
地址,
数组,
字符串,
指针
From: https://www.cnblogs.com/poteitoutou/p/16949546.html