一道函数测试题!void func(int *x){ x=(int *)malloc(sizeof(int));*x=12;}int main(){ int x=10;func(&x);printf("%d",x)}x输出为什么是10?当所malloc那行注释后x的输出为12?

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/27 13:46:27
一道函数测试题!void func(int *x){ x=(int *)malloc(sizeof(int));*x=12;}int main(){ int x=10;func(&x);printf(

一道函数测试题!void func(int *x){ x=(int *)malloc(sizeof(int));*x=12;}int main(){ int x=10;func(&x);printf("%d",x)}x输出为什么是10?当所malloc那行注释后x的输出为12?
一道函数测试题!
void func(int *x)
{ x=(int *)malloc(sizeof(int));
*x=12;
}
int main()
{ int x=10;
func(&x);
printf("%d",x)
}
x输出为什么是10?当所malloc那行注释后x的输出为12?

一道函数测试题!void func(int *x){ x=(int *)malloc(sizeof(int));*x=12;}int main(){ int x=10;func(&x);printf("%d",x)}x输出为什么是10?当所malloc那行注释后x的输出为12?
func传入的是x的地址没错,但是在函数内部又重新开辟了新内存,在新的内存上数据赋值为12,不会影响原先x的值,故仍旧是10