gpt4 book ai didi

c - 动态内存位置 C - 参数 int *

转载 作者:太空宇宙 更新时间:2023-11-04 01:38:09 24 4
gpt4 key购买 nike

我有一段代码:

void Read(int T[], int len) {
int i;
T = (int*) malloc(len * sizeof *T);
for (i=0;i<len;i++) {
scanf("%d", &T[i]);
}
}

我是这样使用的:

int *T;
Read(T,len);

接下来,我要写我的表格:

void Write(int T[], int len) {
int i;
for(i=0;i<len;i++) {
printf("%d, ", T[i]);
}
printf("\n");
return;
}

并使用它:

Write(T,len);   

它给了我错误的结果。我几乎可以肯定问题与“&”有关,但我无法处理它。

提前致谢

最佳答案

一个问题可能是您正在修改 Read 函数中的局部变量 T:

int *T;
Read(T, len);
// ...

void Read(int T[], int len) {
int i;
T = (int*) malloc(len * sizeof *T);
// ...
}

Read 中的T 是真实T 变量的副本。您为副本分配了一个新值,但原始值保持不变。

要实际修改外部 T,像这样传递一个指向它的指针:

int *T;
Read(&T, len);
// ...

void Read(int **T, int len) {
int i;
*T = (int*) malloc(len * sizeof *T);
for (i=0;i<len;i++) {
scanf("%d", &(*T)[i]);
}
}

关于c - 动态内存位置 C - 参数 int *,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10769864/

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