结构体运用

来源:互联网 发布:淘宝被扣24分还能用吗 编辑:程序博客网 时间:2024/06/07 00:55

函数传结构体

#include <stdio.h>struct myabc{        int a;        int b;        int c;};void fun(struct myabc *pabc){        printf("%d\n", pabc->a);        printf("%d\n",pabc);}int main(int argc, char const *argv[]){        struct myabc abc;        abc.a=1;        abc.b=2;        abc.c=3;        // struct myabc abc={1,2,3};        fun(&abc);        return 0;}

指针结构体

#include <stdio.h>#include <stdlib.h>int main(int argc, char const *argv[]){struct myabc{int a;int b;};struct myabc *p=(struct myabc*)malloc(sizeof(struct myabc));//给结构体指针指向1个地址,否则可能会出现Segmentation fault错误p->a=1;/*2种赋值写法都可以,最好用->这种。常常用于结构体单链表,->运算是间接寻址,比.运算的寻址速度更快。<span style="white-space:pre"></span>而且你用多指针的话会发现指针用->这种调用方式更简洁,几乎没人会使用p[0].k或*p.k这样的调用方式。<span style="white-space:pre"></span>*/(*p).b=2;printf("%d,%d\n",p->a,(*p).b);free(p);return 0;}

结构体类型函数

#include <stdio.h>struct myabc{int a;int b;int c;};struct myabc fun(){struct myabc abc;abc.a = 100;abc.b = 200;abc.c = 300;return abc;} int main(int argc,char **argv){struct myabc mabc;mabc = fun();printf("b = %d\n",mabc.b);}

指针结构体类型函数

#include <stdio.h>#include <stdlib.h>struct myabc{int a;int b;int c;};struct myabc *fun(){struct myabc *abc=(struct myabc*)malloc(sizeof(struct myabc));abc->a = 100;abc->b = 200;abc->c = 300;printf("%d",abc);free(abc);return abc;} int main(int argc,char **argv){struct myabc *mabc;mabc = fun();printf("b = %d\n",mabc->b);}

p = p->next;这应该出现在C语言的链表,这里的next应该是一个与p同类型的结构体指针,其定义格式应该是:struct Data {   int a;   struct Data * next;};/*定义结构体*/…………main(){   struct Data * p;/*声明指针变量p*/  ……   p = p->next;/*将next中的值赋给p*/}


0 0