C中2维数组的Typedef

use*_*190 10 c arrays typedef multidimensional-array

有没有办法在C中键入一个二维数组?就像是:

typedef char[10][10] board;
Run Code Online (Sandbox Code Playgroud)

此示例无法编译.有什么办法吗?或任何其他解决方案?

Yu *_*Hao 17

试试这个:

typedef char board[10][10];
Run Code Online (Sandbox Code Playgroud)

然后你可以定义新的数组:

board double_array = {"hello", "world"}; 
Run Code Online (Sandbox Code Playgroud)

它与以下相同:

char double_array[10][10] = {"hello", "world"};
Run Code Online (Sandbox Code Playgroud)


0de*_*al0 5

类型定义声明

类型定义语句用于允许使用其他已有的数据类型定义用户定义的数据类型.

基本格式:

typedef existing_data_type new_user_defined_data_type;
Run Code Online (Sandbox Code Playgroud)

所以,你的应该是:

typedef char board[10][10];
Run Code Online (Sandbox Code Playgroud)

您可以使用它,因为Yu Hao已经说过或者您也可以使用它与char指针来定义像这样的2D数组:

typedef char *board[10];
Run Code Online (Sandbox Code Playgroud)

然后你可以按照YU Hao所描述的那样做.在这种方式中,您无需硬编码要用于字符串的字符数.

  • 使用名称`board`,很可能该类型将用于表示游戏板,并且不会用于保存字符串本身.这虽然是一个小细节.另外,严格来说`typedef`给现有类型一个名称(别名),而不是创建一个新类型.这是一个微妙的细节,并没有实质上减损你的答案. (2认同)