国产探花免费观看_亚洲丰满少妇自慰呻吟_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;}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 长春市| 南川市| 盐山县| 米林县| 龙山县| 泽普县| 河南省| 儋州市| 宝鸡市| 青浦区| 从化市| 定南县| 庆安县| 抚松县| 珲春市| 新干县| 突泉县| 工布江达县| 无为县| 峨眉山市| 延吉市| 长垣县| 巴彦淖尔市| 丽江市| 灵宝市| 吉木乃县| 宜州市| 阳泉市| 蓬莱市| 息烽县| 措美县| 岳普湖县| 行唐县| 深泽县| 喀什市| 延长县| 余干县| 长武县| 宣城市| 区。| 运城市|