下面是我的代码:
#include <stdio.h>
#include <stdlib.h>
#define X 5
#define Y 7
struct mystruct {
char name[10];
int id[1];
int status[1];
};
void show_struct(struct mystruct* table, int X_selected, int Y_selected);
void main(void)
{
struct mystruct* table[X][Y];
int X_selected = 3;
int Y_selected = 4;
table[X_selected][Y_selected] = (struct mystruct*)malloc(sizeof(struct mystruct));
strcpy(table[X_selected][Y_selected]->name, "NAME");
*table[X_selected][Y_selected]->id = 0;
*table[X_selected][Y_selected]->status = 1;
show_struct(table, X_selected, Y_selected);
}
void show_struct(struct mystruct* table, int X_selected, int Y_selected)
{
if (**CONDITION**) {
printf("OK , STATUS IS 1");
}
else {
printf("ERROR , STATUS IS NOT 1");
}
}
我需要帮助来查找代码中的CONDITION,以检查状态是否为1
当i调试到第 * 行时 *show_struct(table,X_selected,Y_selected);**在开始工作之前,我可以看到状态=1已成功置于表中:
Memory Table
1条答案
按热度按时间iszxjhcz1#
这里有一个可能比你要求的要多一点的解决方案。我为结构的数组创建了一个新的结构,它携带了大小信息,还有一些函数在这个“数组结构”上操作,而不是在原始指针上操作。
我的解决方案假设您最终希望在运行时输入数组大小(您的原型已经定义了数组大小;在这种情况下,您可以简单地定义在编译时已知大小的适当数组)。
“数组结构”
myTable
只包含一个指向实际数据的指针,这使得它非常小,可以通过值来传递。这种复制是肤浅的:副本指向与原始数据相同的数据。(这样我们就可以用一个函数来填充一个表,该函数通过值来获取数据,如fill_tbl(struct myTable tbl)
。该程序有一个包含结构定义和函数声明的头文件
myStructArray.h
、一个包含函数实现的实现文件myStructArray.c
和一个main.c
文件。我的结构数组. h
我的结构数组. c
主文件. c
示例会话
前两行中的“3 2”和“0 1”是用户输入的大小和索引。其余的是输出。