gpt4 book ai didi

c - 为什么我会因为使用 char 指针数组而出现段错误?

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

我正在尝试使用 c 和指针,因为我是该语言的新手,但我不确定为什么我会遇到段错误,当我将所有内容初始化为 null 然后重新编写时字符指针数组?有人可以解释我做错了什么吗?

#define MAX_SIZE 70    
void gridTest(char*[]);

int main()
{
char *grid[MAX_SIZE] = {0};
testGrid(grid);
return 0;
}

void testGrid(char *grid[]){
for(int i=0;i<MAX_SIZE;i++){
*grid[i] = ' ';
}
for(int j=0;j<MAX_SIZE;j++){
printf("The Character is space, test: %c",*grid[j],j);
}
}

错误

Segmentation fault: 11

最佳答案

检查这一行

  *grid[i] = ' ';

您正在尝试将 space 字符存储在 grid[i] 指向的内存中,这很酷,但是那个指向哪里?

答案是:无效内存(一个空指针,它是)。您尝试使用的内存地址无效,并尝试推导它会调用未定义的行为。

也就是说,看到您的用法,您不需要 char 指针数组,char 数组就足够了。将您的数组定义更改为

 char grid[MAX_SIZE] = {0};

并将调用的函数更改为

void testGrid(char grid[]){

for(int i=0;i<MAX_SIZE;i++){
grid[i] = ' ';
}
for(int j=0;j<MAX_SIZE;j++){
printf("The Character is space, test: %c",grid[j],j);
}
}

关于c - 为什么我会因为使用 char 指针数组而出现段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52579337/

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