【发布时间】:2022-01-15 20:19:57
【问题描述】:
假设在 main 函数中一个 int 类型变量 x 的值为 20。如果该函数被调用 2 次 foo(&x) ,那么 x 的值是多少?
#include<stdio.h>
void foo(int *n)
{
int *m;
m = (int *)malloc(sizeof(int));
*m = 10;
*m = (*m)*5;
n = m;
}
int main()
{
int x = 20;
foo(&x);
printf("%d",x);
}
x 的值不应该是 50,因为我们用 m 初始化 n 的地址,m 的值是 50,但它的值是 20?
【问题讨论】:
-
与
n = m一起使local 指针n指向与m相同的位置。在foo()函数中对n的更改未反映在x中的main()中;对*n的更改反映在x中。您可能想要*n = *m;代替...并记住free(m);完成后...和#include <stdlib.h>[并停止转换malloc()的返回值]。