C语言结构体的全面应用

本文为C语言结构的应用总结,C语言没有类的概念,但可以通过结构体构建一个类似类的操作概念。下文是使用的场景代码,由于水平有限,错误之处请各位大神指出。在此抛砖引玉,希望做嵌入式的的人能提供更多的应用的典型案例。

#include#include/*结构体定义 */

//只有结构类型的定义

struct stuff

{

            char job[20];

            int  age;

            float height;

};

//含有结构体类型的结构体变量初始化定义

struct stuff1

{

         char job[20];

          int  age;

          float height;

}Hu;

//struct stuff1  Hu //就相当于这样子

// 结构体不能再用来定义同类型的结构体变量,一锤子买卖;

struct

{

     char job[20];

     int  age;

    float height;

}Hu1;//这种类型的结构体变量只能有这么一个,不能去定义其他的

/*结构体别名声明 */

typedef struct Stu

{

        char job[20];

         int  age;

         float height;

}Stuff,*PtrStuff;

Stuff      Sam;//等于 struct Stu Sam;

PtrStuff  pSam;//等于 struct Stu *Sam;

/*结构体与其他类型 */

typedef struct arraychange

{

            int cnt;

           char pc[0];

}arraychange;//pc数组只能放在最后,不能调换位置;柔性数组,少用;

struct check

{

        union

        {

              char a;

         };

         int i;

}CheckSystem; //系统内存大小端测试,结构体与联合体结合

struct structureA

{

         struct structureB

        {

               int c;

          }b;  //必须要有实体才能够在后面使用struct structureB bb;

        struct structureB bb;

}a;//结构体中含有结构体;

//函数可以用结构体元素,结构体,结构体指针做参数;用元素与普通没什么区别,用结构体则拷贝副本,指针是唯一的;函数可以返回结构体,使用指针的效率高

void func1(int par);        //结构体元素

Stuff func2(Stuff par);      //结构体,返回结构体

void func3(PtrStuff par); //结构体指针

void print(Stuff par);

//结构体含有函数指针做元素,这样就可以实现类似面向对象的类封装

int fun1(int age,int weight);

void fun2(int age,int weight);

struct Fun

{

            int age;

            int weight;

            int (*pfun1)(int age,int weight);  //函数还有一个int返回值,两个int参数

           void (*pfun2)(int age,int weight);  //函数没有返回值,两个int参数

};

int main(void)

{

          /*结构体作为函数参数 */

          Stuff    test,tmptest;

           PtrStuff  ptest=&test;

          /*结构体含有函数指针*/

           struct Fun myfun={10,45,fun1,fun2};

           struct Fun *ptrmyfun=&myfun;

          int age=22,weight=60,temp=0;

           /*结构体作为函数参数 */

           strcpy(test.job,"manager");

            test.age=25;

           test.height=1.65;

          func1(test.age);

          tmptest=func2(test);

          print(tmptest);

          func3(ptest);

           print(test);

         /*结构体含有函数指针*/

          temp=myfun.pfun1(age,weight); //成员调用函数

          printf("temp %d\n",temp);

            myfun.pfun2(age,weight);  //成员调用函数

          myfun.age=80;

           myfun.weight=65;

            temp=ptrmyfun->pfun1(myfun.age,myfun.weight); //指针调用函数

         printf("temp %d\n",temp);

         ptrmyfun->pfun2(myfun.age,myfun.weight);    //指针调用函数

        return 0;

}

void print(Stuff par)

{

printf("your job is:%s\n",par.job);

printf("your age is:%d\n",par.age);

printf("your height is:%f\n",par.height);

}

void func1(int par)

{

printf("your age is:%d\n",par);

}

Stuff func2(Stuff par)

{

strcpy(par.job,"Engineer");

par.age=30;

par.height=1.80;

return par;

}

void func3(PtrStuff par)

{

strcpy(par->job,"Programmer");

par->age=19;

par->height=170;

}

int fun1(int age,int weight)

{

int temp=0;

temp=age+weight;

return temp;

}

void fun2(int age,int weight)

{

printf("your age is:%d\n",age);

printf("your weight is:%d\n",weight);

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容