gpt4 book ai didi

c - Typedef 指向二维数组的指针

转载 作者:行者123 更新时间:2023-11-30 20:50:23 30 4
gpt4 key购买 nike

我需要声明一个类型(使用 typedef),这是一个指向 2D 数组的 char 指针。

typedef char* board {
char* arr[8][8];
}chessboard;

但是它不会编译。我也发现了这个:

typedef char board[8][8];

这可行,但它实际上不是指向数组的指针。如果有任何想法,我将不胜感激,谢谢。

最佳答案

正在做

typedef char (*BoardPointer)[8][8]

BoardPointer 定义为指向 char 的 8x8 数组的类型,因此

BoardPointer boardpointer;

boardpointer 定义为指向 char 的 8x8 数组的指针。

要分配 8x8 char 数组,您可以执行以下操作:

BoardPointer boardpointer = malloc(sizeof *boardpointer);
if (NULL == boardpointer)
{
perror("malloc() failed");
}
else
{
// use boardpointer here. Set all elements to '\0' for example:
for (size_t r = 0; r < 8)
{
for (size_t c = 0; c < 8)
{
(*boardpointer)[r][c] = '\0';
}
}

free(boardpointer);
}
<小时/>

正如其他人指出的那样,typedefing 指针很容易出错,并且会使代码难以阅读,您也可以这样做:

typedef char Board[8][8]

Board * boardpointer = malloc(sizeof *boardpointer);
if (NULL == boardpointer)
{
perror("malloc() failed");
}
else
{
// use board here. Set all elements to '\0' for example:
for (size_t r = 0; r < 8)
{
for (size_t c = 0; c < 8)
{
(*boardpointer)[r][c] = '\0';
}
}

free(boardpointer);
}

或者只是

typedef char Board[8][8]

Board board;
// use board here. Set all elements to '\0' for example:
for (size_t r = 0; r < 8)
{
for (size_t c = 0; c < 8)
{
board[r][c] = '\0';
}
}

关于c - Typedef 指向二维数组的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45894795/

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