国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C語言結構體內嵌函數指針

2019-11-10 19:54:05
字體:
來源:轉載
供稿:網友
/*

.c文件聲明:1、關于結構體定義以及初始化的注意事項。2、關于C語言結構體內嵌函數指針實現面向對象。

對于一個結構體struct a {int b;int c;}; //結構體定義后需要加分號。結構體初始化方式:1、struct a a1 = { 1, 2};2、struct a a1 = {.b = 1,.c = 2};3、struct a a1 = {b:1,c:2}linux內核習慣用第二種,使用第二種或第三種時,結構體成員的初始化順序可變。C語言是面向過程的,但是C語言寫出的linux系統是面向對象的。非面向對象的語言,不一定不能實現面向對象。只是說用面向對象的語言來實現面向對象要更加簡單一些、直觀一些、無腦一些。用C++、java等面向對象的語言來實現面向對象簡單一些,因為語言本身幫我們做了很多事情;但是用C來實現面向對象很麻煩,看起來也不容易理解,這就是為什么大多數人學過C語言卻看不懂linux內核代碼的原因。如下例子:*/#include<stdio.h>struct Struct_Insect_Poiter{int a;int b;void (*Out)(void);int (*Add_To_Sum)(int , int );}; void test(void);int test_1(int a, int b);int main(void){int Sum = 0;struct Struct_Insect_Poiter struct_a = {.a = 1,.b = 2,.Out = test //結構體初始化末尾,不需要加任何符號.}; //第二種結構體初始化方式。struct Struct_Insect_Poiter struct_b ={a:3,b:6,Add_To_Sum:test_1//函數指針的初始化,將該函數指針指向與其類型匹配的函數。}; //第三種結構體初始化方式。Sum = struct_b.Add_To_Sum(struct_b.a, struct_b.b);//調用該函數指針。PRintf("Sum = %d/n",Sum);//Sum = 9,結果正確。// struct_a.Out;//無報錯,但是無正確結果。struct_a.Out();//結果正確。return 0;}void test(void){printf("Succeed!/n");}int test_1(int a, int b){return a+b;}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 英山县| 华池县| 武宣县| 会昌县| 许昌市| 陇南市| 延吉市| 兰溪市| 许昌县| 巩留县| 沿河| 徐闻县| 错那县| 昌吉市| 沈丘县| 万源市| 嵩明县| 都江堰市| 德令哈市| 林芝县| 南充市| 潜山县| 西乌珠穆沁旗| 康乐县| 招远市| 乌鲁木齐县| 桐城市| 绥阳县| 台东县| 宁国市| 涟源市| 尼木县| 合水县| 东兰县| 双柏县| 南平市| 清涧县| 灵丘县| 宿州市| 洞口县| 南江县|