gpt4 book ai didi

c - 将字符分配给在 C 中使用 malloc 声明的二维数组时收到警告

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

我正在学习如何使用 malloc 创建动态数组。我正在尝试为其分配字符然后打印它们。当我运行该程序时,它可以正常工作,但是我不断收到这些警告:

位置 (1):警告:从“int”分配给“char *”的整数到指针转换不兼容 [-Wint-conversion]

位置(2):警告:格式指定类型“int”,但参数类型为“char *”[-Wformat]

如何解决此问题,为什么我不断收到此警告?

int main(void) {  
char **board = (char **) malloc(26*26*sizeof(char));

for(int i = 0; i < 25; i++) {
*(board + i) = i + 'a'; //location (1)
printf("%c\n", *(board + i)); //location (2)
}
free(board);

return (EXIT_SUCCESS);
}

最佳答案

类型

*(board + i)

char*并且您正在尝试分配 int 类型的值对此。这就是编译器在这两种情况下提示的问题 - char*不是int !

我建议您知道要固定的大小(26x26),只需使用普通的二维数组

char board[26][26];

因为似乎不需要使用动态分配。

如果您想坚持使用 malloc 的方法,首先创建一个包含 26 char* 的数组然后分配一个动态数组 26 char给每一个。

类似这样的事情

char* board[26];
for (int i = 0; i < 26; i++)
{
board[26] = malloc(26*sizeof(char));
}

您还需要有 2 个循环来填充表,因为从 0 到 25 的单个循环不会填充所有内容。

关于c - 将字符分配给在 C 中使用 malloc 声明的二维数组时收到警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33600238/

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