- #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;
- }
以前经常糊里糊涂的,现在明白了,变量成员的用.通过指针寻址的成员用箭头。
|