作文 從指標變數到指標函式,路過函式指標

2021-09-10 16:58:02 字數 1627 閱讀 7471

從最簡單的指標變數出發,

比如int a;

那麼a是乙個整形變數

現在int *a;

那麼a是乙個指標變數

指標a表達的是某個位址,它需要依託某個實實在在的東西

比如:typedef struct

ringbuff_t;

static ringbuff_t ringbuff;

ringbuff_t *pringbuff = &ringbuff;

這樣就定義了乙個實實在在的東西ringbuff 和 乙個指標變數pringbuff

兩者在使用乙個是 . 乙個是 ->

程式設計高手一般喜歡指標變數,寫出的程式很輕盈,耦合度低。

結論:指標變數其實是乙個變數,它指向某個實實在在的東西。

經典嵌入式風格**:

void buzzinit()

庫函式風格**:

hal_gpio_writepin(led_gpio_port, led_pin,gpio_pin_reset);//不亮

hal_delay(100);

hal_gpio_writepin(led_gpio_port, led_pin,gpio_pin_set);//亮

hal_delay(100);

指標變數風格**:

unsigned int *p1,*p2;

printf("gpiob->brr::%0x give p1\n",data);

p1=(unsigned int*)data;

data = (unsigned int)&gpiob->bsrr;

printf("gpiob->bsrr::%0x give p2\n",data);

p2=(unsigned int*)data;

void newio_test(void)

位帶風格:stm32l471失敗

繼續:函式指標

函式指標重音是指標,它是指向函式的指標。前面說指標變數是指向實實在在的東西,在函式指標的情形下這個實實在在的東西就是乙個函式。

補充知識:指標函式

指標函式重音是函式,這個函式比較特殊是它的返回值是乙個指標,也就是char*。

【實際程式設計用的比較少 因為返回char* 記憶體是個問題 著名函式是malloc】

型別名 *函式名(函式引數列表);

其中,字尾運算子括號"()"表示這是乙個函式,其字首運算子星號"*"表示此函式為指標型函式,其函式值為指標,即它帶回來的值的型別為指標,當呼叫這個函式後,將得到乙個"指向返回值為…的指標(位址),"型別名"表示函式返回的指標指向的型別"。

"(函式引數列表)"中的括號為函式呼叫運算子,在呼叫語句中,即使函式不帶引數,其參數列的一對括號也不能省略。其示例如下:

int *pfun(int, int);

由於"*"的優先順序低於"()"的優先順序,因而pfun首先和後面的"()"結合,也就意味著,pfun是乙個函式。即:

int *(pfun(int, int));

接著再和前面的"*"結合,說明這個函式的返回值是乙個指標。由於前面還有乙個int,也就是說,pfun是乙個返回值為整型指標的函式。

2在嵌入式的應用,點亮發光二極體

用庫函式

用函式指標

用位帶3在業務層的應用

發卡走流程的抽象

從變數到指標到引用

1.再熟悉不過的說法,引用是變數的別名,操作引用跟操作變數的效果是一樣的 2.引用不是物件,因此,不會給引用分配記憶體空間 3.引數傳遞如果形參是引用,那麼此時引用的表現就像指標一樣,可以直接改變變數的值。這三個特點聽起來簡單,但是如果深入思考一下,就不由得疑惑 究竟是什麼造成了引用的這些特點,而引...

從變數到函式,從函式和全域性變數到模組,從模板到包

總體來說關係從上到下 包 子包 模組 全域性變數 函式,函式 變數。一 包 packages 包是指乙個包含模組與乙個特殊的 init py檔案的資料夾。二 模組 modules 乙個模組可以被其他程式匯入並執行其功能。通常通過使用 import 和 from.import 語句來實現。比如 imp...

函式指標 (變數)

函式指標的宣告方法為 函式型別 標誌符 指標變數 名 形參列表 注意函式指標變數和 函式指標型別的區別 1 直接宣告乙個函式指標變數 類似struct型別的定義和宣告,放在一起 int func int x 宣告乙個函式 int f int x 宣告乙個函式指標 f func 將func函式的首位址...