如何使用结构体指针修改多维结构体数组中的成员值?
错误原因
- 指针类型定义错误:
typedef struct human_table *humanPointer;这行是非法的,human_table是你定义的数组变量名,不是结构体类型名,struct human_table属于不存在的自定义类型。要指向Human类型的3行2列二维数组,指针类型需要匹配第二维的长度,正确定义为typedef Human (*humanPointer)[2]; - 成员访问语法错误:
human_table[x][y]拿到的是Human类型的结构体实例,不是结构体指针,不能用->访问成员,需要改用.运算符。
修正后代码
// 修正指针类型定义,[2]对应二维数组的第二维长度 typedef Human (*humanPointer)[2]; void Modify_Human_age(humanPointer human_table, int x, int y, int New_Age) { human_table[x][y].age = New_Age; }
调用示例
// 示例:把第0行第1个元素的age改成20,直接传数组名即可 Modify_Human_age(human_table, 0, 1, 20);
内容的提问来源于stack exchange,提问作者PreScalar
相关产品推荐
相关产品推荐

