我可以在解释这段代码时得到一些帮助吗?

标签 c pointers struct typedef

所以我正在为学校编写代码,但我需要一些帮助来理解正在创建的这个结构和 typedef

struct matrix_2D_struct {
    int** data_arr;
    int rows;
    int cols;
};
typedef struct matrix_2D_struct * matrix_ptr;

这是否定义了一个 matrix_2D_struct 类型的结构,它包含一个指向名为 data_arr 的 int 类型指针、一个名为 rows 的 int 和一个名为 cols 的 int?

还有最后一行我没看懂。我知道它正在定义一些东西并给它一个 matrix_ptr 的标签,但它是否将结构的别名定义为指针?我不确定该如何解释。

另外,我可以使用 calloc 将 data_arr 定义为二维数组吗?

感谢您的宝贵时间。

最佳答案

有时你会看到这样的定义:

unsigned long long var;

如果您的程序有很多 unsigned long long 就会变得太乏味了。要检查它,您可以通过使用 typedef 定义一个基于该类型的新类型来缩短它,例如:

 typedef unsigned long long ULL;

现在你只需要写 ULL var;

与结构相同,而不是每次都编写 struct dummy var 你定义一个基于 struct dummy 的新类型,使用 typedef 如下:

typedef struct dummy DUMMY;

DUMMY myVar; // the type of myVar is a struct dummy

与指针相同,您可以定义一个新类型,即指针类型,例如:

typedef struct dummy* P_DUMMY;

P_DUMMY myVarPtr; // the type of myVarPtr is a pointer to struct dummy;

关于我可以在解释这段代码时得到一些帮助吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33459182/

相关文章:

c - While 循环 - 初学者

c - 为什么这个 malloc 在 C 中不起作用?

c++ - 删除使用 "new"创建的对象

c - 读取并存储 C 字符串值

从另一个结构更改一个结构的值

c - 有没有办法在运行时访问调试符号?

c - 缓冲区与字符串比较(没有换行符)

C DLL 和新数据服务进程之间基于云的 IPC

c++ - 数组的行为不符合我的预期

c++ - C++的STL priority_queue with struct