、数组的地址与容量在生命期内保持不变,只有内容可以改变;指针可以随时指向任意类型的内存块.
2、不能对数组名进行直接复制与比较。如不能用语句b=a,把数组a的内容复制给数组b.否则产生编译错误.
应该用strcpy,同理比较b和a的内容是否相同,不能用if(b==a)来判断,应该用标准库函数strcmp进行
比较.
语句p = a 并不能把a的内容复制给指针p,而是把a的地址赋给了p。要想复制a的内容,可以先用库函数
malloc为p申请一块容量为strlen(a) + 1 个字符的内存,再用strcpy进行字符串复制。同理,语句
if(p==a) 比较的不是内容而是地址,应该用库函数strcmp来比较。
3、用运算符sizeof可以计算出数组的容量(字节数)。如: char a[] = "hello world"; char *p = a;
sizeof(a)的值是12,但sizeof(p)的值却是4。这是因为sizeof(p)得到的是一个指针变量的字节数,
相当于sizeof(char *),而不是p所指的内存容量。C++/C语言没有办法知道指针所指的内存容量,除
非在申请内存时记住它。
4、如果函数的参数是一个指针,不要指望用该指针去申请动态内存。

被折叠的 条评论
为什么被折叠?



