【发布时间】:2021-04-15 17:01:16
【问题描述】:
基本上在最基本的层面上我无法理解为什么我不能这样做:
#include <stdio.h>
#include <stdlib.h>
void mal(char *str){
str = malloc(sizeof(char));
}
int main(void)
{
char *s;
mal(s);
free(s);
return 0;
}
【问题讨论】:
-
因为
str内部mal()和s内部main()是不同的对象。对str的任何更改不会反映在s中(换句话说:C 按值传递参数)。 -
请注意,分配单个字符意味着结果只能(合法地)存储一个字符串——空字符串。
-
最基础的层次是你不了解C函数实参和参数的工作原理。
标签: c memory memory-management memory-leaks malloc