鱼C论坛

 找回密码
 立即注册
查看: 2383|回复: 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 编辑
#include<stdio.h>

struct student
{
        int num;
        char name[20];
        char sex;
        int age;
        char addr[30];
};

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

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

        printf("num      name      sex     age       addr\n\n");
        for(i=0 ; i<3 ; i++)
        {
                printf("%-9d%-11s%-7c%-9d%s\n", (*((*p) + i)).num, (*((*p) + i)).name, (*((*p) + i)).sex,  (*((*p) + i)).age,  (*((*p) + i)).addr);
        }
        putchar('\n');
}

循环体这样也行
        for(i=0 ; i<3 ; i++)
        {
                printf("%-9d%-11s%-7c%-9d%s\n", ((*p) + i)->num, ((*p) + i)->name, 
                ((*p) + i)->sex,  ((*p) + i)->age, ((*p) + i)->addr);
        }
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

struct student {
        int num       ;
        char name[20] ;
        char sex      ;
        int age       ;
        char addr[30] ;
} ;

int main(void)
{
        struct student stu[3] = {{111,"Li",'M',18,"Dalian"}         , 
                                 {222, "Wang", 'F', 20, "Shenyang"} ,
                                 {333, "zhang", 'M', 19, "Beijing"}}                                    ;
        struct student * p = stu                                                                        ;
        int i                                                                                           ;
        for(i = 0 ; i < 3 ; i ++) {
                printf("%d\t%s\t%c\t%d\t%s\n" , p -> num , p -> name , p -> sex , p -> age , p -> addr) ;
                p ++                                                                                    ;
        }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

struct student
{
        int num;
        char name[20];
        char sex;
        int age;
        char addr[30];
};

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

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

        printf("num      name      sex     age       addr\n\n");
        for(i=0 ; i<3 ; i++)
        {
                printf("%-9d%-11s%-7c%-9d%s\n", (*((*p) + i)).num, (*((*p) + i)).name, (*((*p) + i)).sex,  (*((*p) + i)).age,  (*((*p) + i)).addr);
        }
        putchar('\n');
}

循环体这样也行
        for(i=0 ; i<3 ; i++)
        {
                printf("%-9d%-11s%-7c%-9d%s\n", ((*p) + i)->num, ((*p) + i)->name, 
                ((*p) + i)->sex,  ((*p) + i)->age, ((*p) + i)->addr);
        }
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-26 10:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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