打印
[技术讨论]

天热睡不着,写一段代码练练手,巩固一下基础概念

[复制链接]
366|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
#include <stdio.h>
#include <stdlib.h>

//定义结构体类型,并给该结构体类型起个新名字All,注意有符号变量的位宽,以及最高位用来表示正负。
typedef struct
{
    int i;
    int j[3];
    int k1:3;
    int k2:5;
    float m;
} All;
//定义结构体类型J
struct J
{
     unsigned int j1:4;
     unsigned int j2:4;
     unsigned int j3:4;
     unsigned int j4:4;
};
//定义联合体变量 bk,里面包含1个变量i和一个结构体类型为J的结构体变量j
union
{
    unsigned int i;
    struct J j;

} bk;

void bill( All *pii)
    {
        pii->i=12;
        pii->j[2]=34;
        pii->k1=2;
        pii->k2=3;
        pii->m=3.21;
    }
//定义一个链表结构体,包含向前的指针、存储的数字、向后的指针,指针指向的类型为自身
struct Link
{
    struct Link *pre;
    int mm;
    struct Link *nex;
};

int main()
{
    All axx;

    axx.i=5;
    axx.j[0]=8;
    axx.k1=-1;
    axx.k2=15;
    axx.m=1.32;
    printf("Hello world!\n");
    printf("axx.i=   %d\n",axx.i);
    printf("axx.j[0]=%d\n",axx.j[0]);
    printf("axx.k1=  %d\n",axx.k1);
    printf("axx.k2=  %d\n",axx.k2);
    printf("axx.m=   %f\n",axx.m);

    printf("--------------------------------------------------------\n");
    bill(&axx);

    printf("axx.i=   %d\n",axx.i);
    printf("axx.j[0]=%d\n",axx.j[0]);
    printf("axx.k1=  %d\n",axx.k1);
    printf("axx.k2=  %d\n",axx.k2);
    printf("axx.m=   %f\n",axx.m);
    printf("--------------------------------------------------------\n");

    bk.i=0x1234;
    printf("bk.j.j1=%d\n",bk.j.j1);
    printf("bk.j.j2=%d\n",bk.j.j2);
    printf("bk.j.j3=%d\n",bk.j.j3);
    printf("bk.j.j4=%d\n",bk.j.j4);
    printf("--------------------------------------------------------链表测试\n");
//定义三个结构体类型为Link的结构体变量,并对结构体的数值变量赋值,然后将3个结构体变量通过内部指针首尾相连互相咬合组成环状
    struct Link link1,link2,link3;
    link1.mm=11;
    link2.mm=22;
    link3.mm=33;
    link1.nex=&link2;
    link2.nex=&link3;
    link3.nex=&link1;
    link1.pre=&link3;
    link2.pre=&link1;
    link3.pre=&link2;
//通过当前结构体变量的向后指针读取指向的下一个结构体内的变量
    printf("link1.nex-->%d\n",link1.nex->mm);
    printf("link2.nex-->%d\n",link2.nex->mm);
    printf("link3.nex-->%d\n",link3.nex->mm);
    printf("---------------------------------------------\n");
//通过当前结构体变量的向前指针读取指向的上一个结构体内的变量
    printf("link1.pre-->%d\n",link1.pre->mm);
    printf("link2.pre-->%d\n",link2.pre->mm);
    printf("link3.pre-->%d\n",link3.pre->mm);

    return 0;
}

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:西安公路研究院南京院
简介:主要工作从事监控网络与通信网络设计,以及从事基于嵌入式的通信与控制设备研发。擅长单片机嵌入式系统物联网设备开发,音频功放电路开发。

1896

主题

15632

帖子

198

粉丝