#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/