Typedef 指向二维数组的指针
Typedef a pointer to 2D array
我需要声明一个类型(使用 typedef),这是一个指向二维数组的字符指针。
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 '[=12=]' for example:
for (size_t r = 0; r < 8)
{
for (size_t c = 0; c < 8)
{
(*boardpointer)[r][c] = '[=12=]';
}
}
free(boardpointer);
}
正如其他人指出的那样,typedef
ing 指针容易出错并且使代码难以阅读,您也可以这样做:
typedef char Board[8][8]
Board * boardpointer = malloc(sizeof *boardpointer);
if (NULL == boardpointer)
{
perror("malloc() failed");
}
else
{
// use board here. Set all elements to '[=13=]' for example:
for (size_t r = 0; r < 8)
{
for (size_t c = 0; c < 8)
{
(*boardpointer)[r][c] = '[=13=]';
}
}
free(boardpointer);
}
或者只是
typedef char Board[8][8]
Board board;
// use board here. Set all elements to '[=14=]' for example:
for (size_t r = 0; r < 8)
{
for (size_t c = 0; c < 8)
{
board[r][c] = '[=14=]';
}
}
我需要声明一个类型(使用 typedef),这是一个指向二维数组的字符指针。
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 char
的数组,您可以这样做:
BoardPointer boardpointer = malloc(sizeof *boardpointer);
if (NULL == boardpointer)
{
perror("malloc() failed");
}
else
{
// use boardpointer here. Set all elements to '[=12=]' for example:
for (size_t r = 0; r < 8)
{
for (size_t c = 0; c < 8)
{
(*boardpointer)[r][c] = '[=12=]';
}
}
free(boardpointer);
}
正如其他人指出的那样,typedef
ing 指针容易出错并且使代码难以阅读,您也可以这样做:
typedef char Board[8][8]
Board * boardpointer = malloc(sizeof *boardpointer);
if (NULL == boardpointer)
{
perror("malloc() failed");
}
else
{
// use board here. Set all elements to '[=13=]' for example:
for (size_t r = 0; r < 8)
{
for (size_t c = 0; c < 8)
{
(*boardpointer)[r][c] = '[=13=]';
}
}
free(boardpointer);
}
或者只是
typedef char Board[8][8]
Board board;
// use board here. Set all elements to '[=14=]' for example:
for (size_t r = 0; r < 8)
{
for (size_t c = 0; c < 8)
{
board[r][c] = '[=14=]';
}
}