C語言筆記(三)函式 指標

2021-06-04 13:35:38 字數 1625 閱讀 8746

函式,相當於把大的任務拆分成小的模組,一般乙個函式不超過80行

每個程式只有乙個主函式

輸出資料只能是乙個。有多個返回值的時候可以使用乙個引數

函式宣告:只寫函式頭,不寫函式體;

在函式宣告時,可以省略引數列表的引數名,只寫引數型別

傳值方式,在函式呼叫時,把實參值的乙份拷貝,賦值給形參;

可以寫乙個例子測試:

#include "stdafx.h"

void swap(int,int);

int main(int argc, char* argv)

void swap(int y,int z)

內聯函式:用被調函式的函式體**,替換掉函式呼叫語句。這個替換是在編譯期間發生。

好處:避免函式呼叫的時間開銷,提高執行效率。

代價:增加了記憶體的空間開銷。所以,內聯函式要盡量短小。

函式過載:兩個函式名字一樣,引數不一樣(引數個數不同、引數型別不同),成為函式過載。

重寫:在不同的類之間進行的

#include "stdafx.h"

int square(int);

float square(float);

int main(int argc, char* argv)

int square(int i)

float square(float j)

用%p來顯示這個位址

int a = 2;

int* p = &a;//指標的宣告

printf("p value is %p\n",p);

printf("a address is %p\n",&a);

*來寫入記憶體空間的值   *p = 8898; //a = 8898;

使用指標實現兩個數的交換

#include "stdafx.h"

int change(int *,int *);

int main(int argc, char* argv)

int change(int *x,int *y)

二級指標

#include "stdafx.h"

int *smaller(int *px,int *py);

int main(int argc, char* argv)

int *smaller(int *px,int *py)

**指標(指向的是同一位址,但是它們的位址分別不同)

int a=11;

int *p;

int **pp;

p = &a;

pp = &p;

printf("%p\n",a);

printf("%p\n",p);

printf("%p\n\n\n",pp);

printf("%p\n",a);

printf("%p\n",*p);

printf("%p\n",**pp);

2023年3月4日

《C語言筆記 函式指標》

一,函式指標的實質 1,函式指標的實質還是指標,還是指標變數。本身佔四個位元組 32位系統 2,函式指標 陣列指標 普通指標之間本身沒有區別,區別在於指標指向的東西是個什麼玩意。函式指標指向乙個函式,陣列指標指向乙個陣列。3,函式的實質是一段 這一段 在記憶體中是連續分布的 乙個函式的大括號括起來的...

《C語言筆記 函式指標》

一,函式指標的實質 1,函式指標的實質還是指標,還是指標變數。本身佔四個位元組 32位系統 2,函式指標 陣列指標 普通指標之間本身沒有區別,區別在於指標指向的東西是個什麼玩意。函式指標指向乙個函式,陣列指標指向乙個陣列。3,函式的實質是一段 這一段 在記憶體中是連續分布的 乙個函式的大括號括起來的...

C筆記系列三 函式指標

在程式鏈結過程中,所有函式都被安排空間,形成乙個可以執行的記憶體映像,每個函式程式設計乙個指令塊,有乙個相對固定的儲存位置,這個位置資訊被儲存在函式名中 即函式名儲存著函式的起始位置 所謂的函式呼叫,就是轉到這片指令所在看起始位置開始執行。函式指標,即儲存函式的起始位置,通過指標呼叫函式。函式指標的...