gpt4 book ai didi

C 指针数组地址分配

转载 作者:太空宇宙 更新时间:2023-11-04 06:13:46 25 4
gpt4 key购买 nike

#define MAX_LINES 20
#define MAX_LINE 20

int main(){

char *lines[MAX_LINES];
for(int i=0;i<MAX_LINES;i++){

char line[MAX_LINE];
lines[MAX_LINES+i]=line;

}
}

我很困惑,为什么我的指针数组“lines”在分配了“line”地址时没有任何地址发生变化。为什么该作业不起作用?

最佳答案

您在数组中分配了错误的索引,当您需要使用它时,您分配的内容将不存在,line 变量超出范围。要解决这个问题:

#define MAX_LINES 20
#define MAX_LINE 20

int main(){
char *lines[MAX_LINES];

for(int i=0;i<MAX_LINES;i++){
lines[i] = malloc(MAX_LINE);
}

return 0;
}

虽然原则上您应该始终释放您分配的任何内容,因此编写一个函数来分配并释放它是这里最好的方法。

关于C 指针数组地址分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50648246/

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