tilblackout
tilblackout
采纳率88%
2018-12-03 13:53 阅读 645

C语言指针字符串的问题

图片说明

pStr = (char*)malloc(sizeof(char) * 100);
这个是什么意思,申请空间然后把内存首地址返回给pStr吗
为什么strcpy得有申请内存,上面的不需要。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

3条回答 默认 最新

  • 已采纳
    caozhy 从今以后生命中的每一秒都属于我爱的人 2018-12-03 16:33

    上面的代码应该无法运行,因为pStr指向的"program"是常量,只读的。
    之所以不要分配空间,是因为空间编译器分配好了,运行的时候随进程被加载出来,它的常量就已经占据了内存。
    strcpy也不一定要分配,看下面的写法:
    char buf[100];
    char *p = "program";
    strcpy(buf, p);

    点赞 评论 复制链接分享
  • pwfd791124 pwfd791124 2018-12-04 00:55

    指针定义后是没有分配置内存的,所以需要申请,当然如果你用char buff[100]就可以不用申请了

    点赞 评论 复制链接分享
  • GuanxinQi GuanxinQi 2018-12-04 01:30

    首先给你说明两点:1、pStr是一个指针,对指针进行操作时,需要分配一个地址,否则会非法占用内存地址
    2、对指针赋值时,只是说将这个指针指到相应的地址,不可以将整个字符串进行赋值,如果赋值的话,你得,首先像1所提到的,在他指向一个分配好的
    内存地址的前提下,调用系统的函数memcpy,或者strcpy才可进行赋值

    点赞 评论 复制链接分享

相关推荐