【发布时间】:2020-03-30 07:45:04
【问题描述】:
以下程序显示意外结果
#include <stdio.h>
#include <stdlib.h>
int main()
{
char* num1;
num1 = malloc(100*sizeof(char));
num1 = "38462879";
printf("%s\n",num1);
num1[0]='5';
printf("%s\n",num1);
return 0;
}
我希望它打印给定的字符串,然后打印给定的字符串,在下一行用 5 而不是 3 替换第一个字母。
但它在第一行打印给定的字符串,然后程序没有继续。
你能帮忙吗?
【问题讨论】:
-
应避免在给出命令或答案后更改代码。
-
你先分配动态内存。然后你扔掉那个地址并用不可变字符串文字的地址替换它。那是内存泄漏
标签: c arrays pointers dynamic-memory-allocation