C語言中如何在結構體內定義函數
更新時間:2023年02月24日 10:36:12 作者:徒步者~
這篇文章主要介紹了C語言中如何在結構體內定義函數問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
如何在結構體內定義函數
結構體中引入函數
#include <stdio.h> struct student { ?? ?char *name; ?? ?int age; ?? ?void (*printInfo)(struct student *stu); }; void printInfo(struct student *stu) { ?? ?printf("name = %s, age = %d", stu->name, stu->age); } int main(int argc, char**argv) { ?? ?struct student students[] = { ?? ??? ?{"zhangsan", 10, printInfo}, ?? ??? ?{"lisi", 26, printInfo}, ?? ?}; ?? ?students[0].printInfo(&students[0]); ?? ?students[1].printInfo(&students[1]); }
C++中結構體引入
#include <stdio.h> struct student { ?? ?char *name; ?? ?int age; ?? ?void printInfo(void) ?? ?{ ?? ??? ?printf("name = %s, age = %d\n", name, age); ?? ?} }; int main(int argc, char**argv) { ?? ?struct student students[] = { ?? ??? ?{"zhangsan", 10}, ?? ??? ?{"lisi", 26}, ?? ?}; ?? ?students[0].printInfo(); ?? ?students[1].printInfo(); }
C++中類引入
#include <stdio.h> class student { public: ?? ?char *name; ?? ?int age; ?? ?void printInfo(void) ?? ?{ ?? ??? ?printf("name = %s, age = %d\n", name, age); ?? ?} }; int main(int argc, char**argv) { ?? ?struct student students[] = { ?? ??? ?{"zhangsan", 10}, ?? ??? ?{"lisi", 26}, ?? ?}; ?? ?students[0].printInfo(); ?? ?students[1].printInfo(); }
結構體成員有函數的定義與使用
```c #include <stdio.h> typedef int (*FunHandle)(int, int); //定義 指向函數的指針 struct Example { int a; int b; FunHandle fun; //函數作為結構體成員 }; int add(int, int); int main() { struct Example ex; int r; ex.a = 1; ex.b = 2; ex.fun = add; r = ex.fun(ex.a, ex.b); //結構體中函數的 使用 printf("%d + %d = %d \n", ex.a, ex.b, r); return 0; } int add(int a, int b) { return a+b;
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Visual Studio 2022無法打開源文件的解決方式
這篇文章主要介紹了Visual Studio 2022無法打開源文件的解決方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-01-01windows下安裝QT及visual studio 2017搭建開發(fā)環(huán)境
這篇文章主要介紹了windows下安裝QT及visual studio 2017搭建開發(fā)環(huán)境,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-03-03