黑马程序员技术交流社区

标题: 指针与数组长度问题 [打印本页]

作者: 微尘•逐梦    时间: 2014-4-20 13:15
标题: 指针与数组长度问题
本帖最后由 微尘•逐梦 于 2014-4-21 10:42 编辑
  1. char *name1 = "abc";
  2.     name1 = "abcd";
  3.     printf("%s",name1);
复制代码
创建字符串数组时数组长度就不能改变了,用指针创建指针数组时为什么可以更改赋值字符串的长度?
作者: 星河鹭起    时间: 2014-4-20 13:37
根据我看视频的理解,MJ视频中说指针字符串不能修改,指的是指针所指向的存储空间中的值不能够修改,例如以下:
        char *name1 ="asdasd";
                *name1 = 'd';
    printf("%s",name1);//并不能打印出来,也就是链接这个步骤出错。


char *name1 = "abc";
    name1 = "abcd";
    printf("%s",name1);
而你的这个,首先指针name1是指针,指向的是字符串abc的地址,而第二行name1="abcd",也就是说指针name1指向的是字符串abcd的地址,会将前面所指向的覆盖掉。

MJ视频中说的是指针所指向的存储空间内的值不能改变,你这个是地址,所以两个差别还是挺大的。

这是我个人的理解,不知道是否正确。

作者: 愿我能    时间: 2014-4-20 14:00
name1表示指针,第2句name1 = "abcd";表示指向了新的地址内容,因此原来的地址内容就会丢失,建议不要这样书写




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