0

嗨,朋友,我是新手,正在尝试学习结构...在这里我已经在结构计算中声明了结构日期...但不知道如何从日期访问元素。我通过使用 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;
}
4

3 回答 3

1

你声明dob不是date&my_calc[count]->dob.day

于 2013-03-13T10:54:41.087 回答
1

您需要使用dob,而不是date,例如:

scanf("%d",&my_calc[count]->dob.day);

您要访问的元素的名称是dob-date是结构名称。

通过此修改,您的代码可以正常编译,但您会遇到一些严重的运行时问题- 有关如何正确分配内存的提示,请参阅其他答案。

于 2013-03-13T10:54:47.007 回答
0

如果您 mallocsizeof(struct calc)则包括该结构的所有元素(阅读:它对结构sizeof的所有元素执行 a 并将其相加并根据其分配空间)。

我还在您的代码中看到了很多指针/数组问题,您应该认真阅读该主题。

并且您需要通过元素的名称来引用dob,而不是元素所在的 strcut 的名称 ( date)

于 2013-03-13T10:55:44.137 回答