A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© superdite 中级黑马   /  2015-2-18 11:30  /  950 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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将指向第二个字符。

三、总结:
        数组初始化是从静态存储区把一个字符串复制给数组,而指针初始化只是复制字符串的地址。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马