1. 程式人生 > >結構體中的函式

結構體中的函式

C語言真是很靈活,今天發現結構中函式的應用,就查了些資料總結一下。

其實在結構體已經和C++中的類功能差不多,只是其是面向過程,沒有了作用域的要求,如public等

你可以在結構體中定義函式,然後對其呼叫和類呼叫方法一樣,也可以定義一個函式指標,在呼叫時對其賦值(你要呼叫的指標),這樣看來,C也可以臨時客串一下面向物件了。呵呵.大家可以試一下.

      1 #include<stdio.h>
      2 struct square
      3 {
      4         int length;
      5         int width;
      6         int height;
      7         int (*add)(int a,int b);
      8 };
      9 int square_add(int a,int b)
     10 {
     11         return a + b;
     12 }
     13 int bulk(int length,int width,int height)
     14 {
     15         struct square squ =
     16         {
     17                 .length = length,
     18                 .width = width,
     19                 .height = height,
     20                 add:square_add,
     21         };
     22
     23         printf("Add() is %d/n",squ.add(100,200));
     24         printf("Length is %d/n",squ.length);
     25         printf("Width is %d/n",squ.width);
     26         printf("Height is %d/n",squ.height);
     27         return squ.length * squ.width * squ.height;
     28 }
     29 int main()
     30 {
     31         printf("The square is %d/n",bulk(100,200,300));
     32         return 0;
     33 }
 

相關推薦

結構函式指標初始化

/** * 為結構體中的指標陣列賦值 */ #include <stdio.h> typedef struct test { void (*p)(void); void (*q)(void); void (*y)(void); }t

結構函式指標賦值的兩種方法

/** 02. * 為結構體中的指標陣列賦值 03. */ 04. 05.#include <stdio.h> 06. 07.typedef struct test 08.{ 09. void (*p)(void); 10.

C++組合(聚合)與C結構包含函式

C++組合(聚合)與C結構體中包含函式 今天突然想到C++的聚合,以前一直沒有注意,今天想到就寫下來,做個筆記; C++的類與我們的C語言中的結構體特別像,但是有有些不太一樣,這裡不多累贅了不能,大家學過的都知道。 C++組合(聚合) 我們知道的都是C++的類的物件,

結構使用函式指標

 struct kobj _ type  {  void (*release)(struct kobject *);  struct sysfs _ ops * sysfs _ ops;  struct attribute ** default _

函式使用結構指標變數作為引數時,如果結構嵌套了結構,應該如何呼叫其中的元素?

今天寫程式碼時突然遇到了這個問題,以前不曾探討過多層巢狀結構體指標變數的訪問,只知道結構體指標變數要訪問其元素時應該用 -> 來訪問,但對於結構體中巢狀有結構體的時候呢? 請看下面程式碼: #include “stdio.h” using namespac

C++結構的解構函式和建構函式

在C++中除了類中可以有建構函式和解構函式外,結構體中也可以包含建構函式和解構函式,這是因為結構體和類基 本雷同,唯一區別是,類中成員變數預設為私有,而結構體中則為公有。注意,C++中的結構體是可以有解構函式和構造 函數,而C則不允許。至於聯合體,它是不可能有解構函式和建構

結構遇上巨集定義,以及函式指標的高階寫法(結構能用巨集定義一個函式?)

一、結構體中可以定義一般的巨集定義 如: struct aaa { #define STATUS_1 100 #define STATUS_2 200 #define STATUS_3 300 ........ }; 首先

結構函式

C語言真是很靈活,今天發現結構中函式的應用,就查了些資料總結一下。 其實在結構體已經和C++中的類功能差不多,只是其是面向過程,沒有了作用域的要求,如public等 你可以在結構體中定義函式,然後對其呼叫和類呼叫方法一樣,也可以定義一個函式指標,在呼叫時對其賦值(你要呼叫的指

c++結構作為函式引數的使用

結構體雖然和陣列一樣,都可以儲存多個數據項,但是在涉及到函式時,結構變數的行為更接近於一個基本的單值變數,也就是說,與陣列不同,結構將其資料組合成單個實體或資料物件,該實體被視為一個整體。函式中引數為

結構指向函式的指標

 // 使用的時候必須要先初始化 stu1->id=1000; strcpy(stu1->name,"xufeng"); stu1->initial=initial; stu1->process=process; stu1->destroy=destroy;  printf("%

C語言結構函式指標與函式

1、函式指標 一般的函式指標可以這麼定義: int(*func)(int,int); 表示一個指向含有兩個int引數並且返回值是int形式的任何一個函式指標. 假如存在這樣的一個函式: int add2(int x,int y) { return x+y;

qemu 關鍵結構函式理解

關鍵結構 ./target-arm/translate.c(DisasContext存在於該檔案中,專門為TB塊的生成而服務) typedef struct DisasContext { target_ulong pc; int is_jmp;

C結構函式指標與函式

1. 函式指標 一般的函式指標可以這麼定義:int(*func)(int,int); 表示一個指向含有兩個int引數並且返回值是int形式的任何一個函式指標. 假如存在這樣的一個函式:int add2(int x,int y){return x+y;}那麼在實際使用指標func時可以這樣實現:func=&

結構定義函式指標

結構體指標變數的定義,定義結構體變數的一般形式如下: 形式1:先定義結構體型別,再定義變數 struct結構體識別符號 { 成員變數列表;… }; struct 結構體識別符號 *指標變數名; 變數初始化一:struct結構體識別符號 變數名={初始化值1,初始化值2,…

結構使用建構函式初始化

struct作為資料結構的實現體,它預設所有結構成員預設都是Public,而類的變數和常量數則預設為Private,不過其他類成員預設都是Public。 C++結構體的繼承預設是public,而c++類的繼承預設是private。 所以結構體中使用建構函式也是合理的。 st

在C語言結構添加成員函數

我們 pau 打印 log print class 控制 stdio.h 語言   我們在使用C語言的結構體時,經常都是只定義幾個成員變量,而學過面向對象的人應該知道,我們定義類時,不只是定義了成員變量,還定義了成員方法,而類的結構和結構體非常的相似,所以,為什麽不想想如何

c語言的特殊符號(結構

結合 特殊 value -s height 間接尋址 出現 span size  在“結構”中出現的->運算符成為“右箭頭選擇”,可以用new_node->value = 10;來代替(*new_code).value = 10;即運算符->是運算符*和運

golang 結構的匿名接口

imp -i pil win CA git Go mean others golang 結構體中的匿名接口 代碼示例 golang 中,可以給結構體增加匿名field,可參考 unknwon 大神的書。 匿名字段和內嵌結構體 但,golang同時也可以給結構體定義一個匿名i

C語言中free()函數釋放struct結構的規律

void poi inf clu main 圖片 刪除 動態分配 不同 並不是什麽新鮮的事情,不過值得註意。首先我們知道,在使用struct來定義並聲明一個變量時,將會自動劃分出一個連續的儲存空間(雖然根據某些對齊原則會出現內存間隙,但是大體上來說還是連續的)這一塊連續空間

OpencvMat結構元素的獲取與賦值

【OpenCV3影象處理】Mat中元素的獲取與賦值 ( 對比.at<>()函式 和 .ptr<>()函式) 2017年04月12日 10:08:55 閱讀數:7542 標籤: opencvopencv3 更多 個人分類:&nbs