1、指针与数组—字符串
char m1[] = “Limit yourself to one line’s worth.”;
const char *m1[] = “Limit yourself to one line’s worth.”;
一、相同点:
a>上面两个都声明m1是一个指向后面字符串的指针。
b>根据字符串本身决定了为字符串预留的存储空间大小。
二、不同点:
a>数组形式的m1[],编译器会把数组名m1看做和数组首元素的地址&m1[0]一样,也就是说数组形式的m1是一个地址常量,不能更改m1,如果改了,就意味着改变了存储空间的地址。
只能m1+1来标识数组里面的下一个元素,而不能使用++m1或者m1++。"++”增量运算符只能用于变量名,不能用于常量。
b>指针形式的*m1[],m1[]是指针变量,m1[]中存放的是字符串的地址,并且m1指向了字符串的第一个字符,m1的值是可以改变的,所以可以对它使用增量运算符,++m1将指向第二个字符。
三、总结:
数组初始化是从静态存储区把一个字符串复制给数组,而指针初始化只是复制字符串的地址。 |
|