嗨,朋友我是新手并且正在尝试学习结构......这里我已经在结构计算中声明了结构日期......但是没有想到如何从日期访问元素。我已经通过使用malloc作为父结构calc ...来保留内存,这对于日期结构也是如此? 。请指导我...谢谢!
#include <stdio.h>
#include <stdlib.h>
struct date{
int day;
int month;
int year;
};
struct calc{
int row;
int col;
char menu_name[20];
char sub_menu_name[20];
struct date dob;
};
int main()
{
int count = 0, i;
struct calc *my_calc[2];
//here unable to understand that where i need to resever seprate memory for date?
my_calc[0] = (struct calc *)malloc(sizeof(struct calc));
//trying to asign the date value
for(count; count<2; count++)
{
printf("Please enter day: ");
scanf("%d",&my_calc[count]->date.day);
printf("Please enter month: ");
scanf("%d",&my_calc[count]->date.month);
printf("Please enter Year: ");
scanf("%d",&my_calc[count]->date.year);
}
//trying to print the date value
printf("Day: %d\t Month: %d\t Year: %d\n ",my_calc[0]->date.day,my_calc[0]->date.month,my_calc[0]->date.year);
system("PAUSE");
return 0;
}
答案 0 :(得分:1)
您声明dob
而非date
。 &my_calc[count]->dob.day
答案 1 :(得分:1)
您需要使用dob
,而不是date
,例如:
scanf("%d",&my_calc[count]->dob.day);
您要访问的元素的名称是dob
- date
是结构名称。
通过此修改,您的代码编译得很好,但是您会遇到一些严重的运行时问题 - 请参阅有关如何正确分配内存的其他答案。
答案 2 :(得分:0)
如果你是malloc sizeof(struct calc)
那么它包含了所有结构的元素(读取:它为结构的所有元素做了sizeof
并对其进行求和并根据其分配空间。)
我在代码中也看到很多指针/数组问题,你应该真正阅读这个主题。
你需要使用元素dob
的名称来引用,而不是元素的名称(date
)