鱼C论坛

 找回密码
 立即注册
查看: 3021|回复: 3

[已解决]结构体与共用体

[复制链接]
发表于 2022-11-23 14:43:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

用指向结构体变量的指针表示下列结构体数
组元素:
struct student {
int num;
char name[20];
char sex; int age;
char addr[30];
} ;
struct student stu[3]={
{111,”Li”,’M’,18,”Dalian”},
{222, “Wang”, ‘F’, 20, “Shenyang”},
{333, “zhang”, ‘M’, 19, “Beijing”}
};
最佳答案
2022-11-23 15:22:04
本帖最后由 竹逸 于 2022-11-23 16:07 编辑
  1. #include<stdio.h>

  2. struct student
  3. {
  4.         int num;
  5.         char name[20];
  6.         char sex;
  7.         int age;
  8.         char addr[30];
  9. };

  10. void main()
  11. {
  12.         int i;
  13.         struct student stu[3] = {{111, "Li", 'M', 18, "Dalian"}, {222, "Wang", 'F', 20, "Shenyang"}, {333, "zhang", 'M', 19, "Beijing"}};

  14.         struct student (*p)[3] = &stu;

  15.         printf("num      name      sex     age       addr\n\n");
  16.         for(i=0 ; i<3 ; i++)
  17.         {
  18.                 printf("%-9d%-11s%-7c%-9d%s\n", (*((*p) + i)).num, (*((*p) + i)).name, (*((*p) + i)).sex,  (*((*p) + i)).age,  (*((*p) + i)).addr);
  19.         }
  20.         putchar('\n');
  21. }
复制代码


循环体这样也行

  1.         for(i=0 ; i<3 ; i++)
  2.         {
  3.                 printf("%-9d%-11s%-7c%-9d%s\n", ((*p) + i)->num, ((*p) + i)->name,
  4.                 ((*p) + i)->sex,  ((*p) + i)->age, ((*p) + i)->addr);
  5.         }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-11-23 14:57:19 | 显示全部楼层
本帖最后由 jackz007 于 2022-11-23 15:38 编辑
  1. #include <stdio.h>

  2. struct student {
  3.         int num       ;
  4.         char name[20] ;
  5.         char sex      ;
  6.         int age       ;
  7.         char addr[30] ;
  8. } ;

  9. int main(void)
  10. {
  11.         struct student stu[3] = {{111,"Li",'M',18,"Dalian"}         ,
  12.                                  {222, "Wang", 'F', 20, "Shenyang"} ,
  13.                                  {333, "zhang", 'M', 19, "Beijing"}}                                    ;
  14.         struct student * p = stu                                                                        ;
  15.         int i                                                                                           ;
  16.         for(i = 0 ; i < 3 ; i ++) {
  17.                 printf("%d\t%s\t%c\t%d\t%s\n" , p -> num , p -> name , p -> sex , p -> age , p -> addr) ;
  18.                 p ++                                                                                    ;
  19.         }
  20. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-23 15:22:04 | 显示全部楼层    本楼为最佳答案   
本帖最后由 竹逸 于 2022-11-23 16:07 编辑
  1. #include<stdio.h>

  2. struct student
  3. {
  4.         int num;
  5.         char name[20];
  6.         char sex;
  7.         int age;
  8.         char addr[30];
  9. };

  10. void main()
  11. {
  12.         int i;
  13.         struct student stu[3] = {{111, "Li", 'M', 18, "Dalian"}, {222, "Wang", 'F', 20, "Shenyang"}, {333, "zhang", 'M', 19, "Beijing"}};

  14.         struct student (*p)[3] = &stu;

  15.         printf("num      name      sex     age       addr\n\n");
  16.         for(i=0 ; i<3 ; i++)
  17.         {
  18.                 printf("%-9d%-11s%-7c%-9d%s\n", (*((*p) + i)).num, (*((*p) + i)).name, (*((*p) + i)).sex,  (*((*p) + i)).age,  (*((*p) + i)).addr);
  19.         }
  20.         putchar('\n');
  21. }
复制代码


循环体这样也行

  1.         for(i=0 ; i<3 ; i++)
  2.         {
  3.                 printf("%-9d%-11s%-7c%-9d%s\n", ((*p) + i)->num, ((*p) + i)->name,
  4.                 ((*p) + i)->sex,  ((*p) + i)->age, ((*p) + i)->addr);
  5.         }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-24 09:05:27 From FishC Mobile | 显示全部楼层
其实我这代码的效率没jackz007大佬高,我用的是二级指针,凭白的多了一次寻址的过程,多此一举了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-14 01:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表