gpt4 book ai didi

c - 传递给函数的指针

转载 作者:行者123 更新时间:2023-11-30 15:35:07 25 4
gpt4 key购买 nike

当我使用这段代码时,而不是直接从 init() 调用 malloc(),错误消息出现在 Windows 8 下。标准消息“程序...停止工作”。

我的一些程序在 Windows 8 下生成相同的结果。在 Linux 下一切都很好。win8的C语言不兼容ANSI吗?

FILE *dumpfile;
double *cx;
void init_var(double *ptr) {
ptr = malloc (L*sizeof(double));
for (i=0; i<L; i++) ptr[i] = (double) i;
}

void init() {
// cx = malloc (L*sizeof(double));
// for (i=0; i<L; i++) cx[i] = i;
init_var(cx);
dumpfile = fopen( "dump.txt", "w" );
}

UPD。啊啊啊。我现在明白了。

最佳答案

您正在函数内重新分配函数参数,但这不会更改调用者上下文中的参数。这是因为 C 是按值调用

您必须将 cx地址传递给 init_var() 才能更改它:

void init_var(double **ptr)
{
*ptr = malloc(L * sizeof **ptr);
/* ... */
}

void init(void)
{
init_var(&cx);
}

关于c - 传递给函数的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23056151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com