你能解释一下如何在typedef struct中使用int数组吗?
在我的标题中,我有代码:
typedef struct {
int arr[20];
int id;
} Test;
在某些功能中(我包含我的头文件)我使用:
Test tmp = malloc(sizeof(Test));
tmp.id = 1;
//and how to use array arr?
//for example I want add to array -1
感谢您的回复。
答案 0 :(得分:4)
如果你想动态地做到这一点
Test* tmp = malloc(sizeof(Test));
tmp->id = 1; //or (*tmp).id = 1;
tmp->arr[0] = 5; // or (*tmp).arr[0] = 5
// any index from 0 to 19, any value instead of 5 (that int can hold)
如果您不想使用动态内存
Test tmp;
tmp.id = 1; //any value instead of 1 (that int can hold)
tmp.arr[0] = 1; //any value instead of 1 (that int can hold)
修改强>
正如alk在评论中所建议的那样,
Test* tmp = malloc(sizeof *tmp);
比
更好Test* tmp = malloc(sizeof(Test));
因为,引用alk "前者可以在tmp
的类型定义发生变化后继续存在而无需进一步更改代码"