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

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

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

2019-11-10 20:26:46
字體:
來源:轉載
供稿:網友
/*

.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;}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 特克斯县| 吉林市| 鄂尔多斯市| 高淳县| 虹口区| 河南省| 拜泉县| 通江县| 洱源县| 北安市| 阆中市| 蒙城县| 慈溪市| 嫩江县| 会东县| 麟游县| 汨罗市| 大渡口区| 渝北区| 宁都县| 新乐市| 沾益县| 台湾省| 郴州市| 本溪| 抚州市| 平舆县| 红桥区| 泗洪县| 汉川市| 瑞昌市| 长葛市| 洛扎县| 获嘉县| 乌兰浩特市| 成武县| 丽江市| 石泉县| 丰县| 泸州市| 固原市|