【问题标题】:Typedef for 2 dimensional array in CC中二维数组的Typedef
【发布时间】:2013-07-20 05:00:36
【问题描述】:

有没有办法在 C 中定义二维数组?比如:

typedef char[10][10] board;

此示例无法编译。有什么办法吗?还是其他解决方案?

【问题讨论】:

  • 你试过了吗:typedef char board[][10]; ?
  • 如何将名为board 的变量定义为二维数组?答案:char board[10][10];。要创建 typedef board 而不是变量,请使用“存储类”typedef:typedef char board[10][10];。然后,您可以使用:board b1, b2, b3; 创建 3 个板。您还可以创建一组板:board ab[10];.

标签: c arrays multidimensional-array typedef


【解决方案1】:

试试这个:

typedef char board[10][10];

然后你可以这样定义新数组:

board double_array = {"hello", "world"}; 

与以下内容相同:

char double_array[10][10] = {"hello", "world"};

【讨论】:

  • 二维数组的新定义是什么?
  • @user2216190:您的意思是“给定一个有效的typedefboard,您将如何创建该类型的变量?”如果是这样,答案是board b; 创建了一个board 类型的变量b,它完全等同于char b[10][10];(因为typedef 为一个类型引入了一个替代名称,而不是一个新类型)。
  • 当用 board double_array = {"hello", "world"} 声明时;如何访问数组元素?
  • 板 a[25]; //是否类似于char a[25][10][10];
【解决方案2】:

类型定义声明

类型定义语句用于允许用户定义数据类型 使用其他已经可用的数据类型来定义。

基本格式:

typedef existing_data_type new_user_defined_data_type;

所以,你的应该是:

typedef char board[10][10];

你可以像余浩所说的那样使用它,或者你也可以将它与 char 指针一起使用来定义这样的二维数组:

typedef char *board[10];

然后你就可以按照余浩所说的去做了。 通过这种方式,您无需对要用于字符串的字符数进行硬编码。

【讨论】:

  • 使用名称board,该类型很可能用于表示游戏板,而不会用于保存字符串本身。虽然这是一个小细节。此外,严格来说,typedef 为现有类型提供名称(别名),而不是创建新类型。这是一个微妙的细节,不会严重影响您的回答。
  • @JonathanLeffler 好吧,是的!先生,这似乎更有可能谢谢!
猜你喜欢
  • 2020-01-18
  • 2021-11-14
  • 1970-01-01
  • 2013-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多