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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 微尘•逐梦 中级黑马   /  2014-4-20 13:15  /  1164 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 微尘•逐梦 于 2014-4-21 10:42 编辑
  1. char *name1 = "abc";
  2.     name1 = "abcd";
  3.     printf("%s",name1);
复制代码
创建字符串数组时数组长度就不能改变了,用指针创建指针数组时为什么可以更改赋值字符串的长度?

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

3 个回复

倒序浏览
根据我看视频的理解,MJ视频中说指针字符串不能修改,指的是指针所指向的存储空间中的值不能够修改,例如以下:
        char *name1 ="asdasd";
                *name1 = 'd';
    printf("%s",name1);//并不能打印出来,也就是链接这个步骤出错。


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

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

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

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
name1表示指针,第2句name1 = "abcd";表示指向了新的地址内容,因此原来的地址内容就会丢失,建议不要这样书写
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马