黑马程序员技术交流社区

标题: 学习笔记-字符串 [打印本页]

作者: superdite    时间: 2015-2-18 11:30
标题: 学习笔记-字符串
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将指向第二个字符。

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




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2