如何在typedef结构(C)中使用int数组

时间:2015-11-03 10:46:21

标签: c arrays struct

你能解释一下如何在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

感谢您的回复。

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的类型定义发生变化后继续存在而无需进一步更改代码"