C语言指针字符串的问题

图片说明

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

3个回答

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

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

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问