【发布时间】:2016-12-08 10:31:21
【问题描述】:
这是我试图理解的小型 C 程序:
#include <stdio.h>
#include <stdlib.h>
typedef struct dm_user_params_t {
int x;
} dm_user_params;
dm_user_params xx;
void set_user_params(dm_user_params *yy) {
xx.x = yy->x;
}
int main() {
dm_user_params xx;
dm_user_params *yy;
yy = malloc(sizeof(dm_user_params));
yy->x = 217;
set_user_params(yy);
free(yy);
printf("2 %d" , xx.x);
return 0;
}
输出:
537340672
我应该怎么做才能使xx.x 中的值保持不变?
当我执行 xx.x = yy->x 时,是否复制了引用而不是值?如何验证?
【问题讨论】:
-
xx.x从未初始化。