C語言 傳值與傳位址

2021-08-08 11:32:59 字數 587 閱讀 1620

<1>傳值:實參把值傳給了形參,但沒有傳位址即對實參的修改無效。

核心原理:函式會對形參和中間的臨時變數(函式內定義的變數)重新分配空間。

大多數型別都是傳值,

(1)、全域性變數(把引數定義成全域性變數,一次性分配空間,傳位址,函式訪問時無須引數,直接訪問)

(2)、指標是傳值的,但指標的間接引用是傳位址的;

(3)、陣列是傳位址的,因為陣列對記憶體要求比較苛刻,系統對陣列作引數,不再分配空間,傳位址。

#include

void swap1(int a,int b)

void swap2(int &a,int &b)

void swap3(int *,int *) ; //隱藏不行 先定義後使用

void swap4(int *,int *) ;

#pragma argsused

int main(int argc, char* argv)

void swap4(int *a,int *b)

{int *c=a;

*a=*b;

*b=*c;

不用指標傳遞相當於只在形參中變化,最終的值並沒有變化,切記!切記!!!

C語言 傳值與傳位址

1 傳值 實參把值傳給了形參,但沒有傳位址即對實參的修改無效。核心原理 函式會對形參和中間的臨時變數 函式內定義的變數 重新分配空間。大多數型別都是傳值,1 全域性變數 把引數定義成全域性變數,一次性分配空間,傳位址,函式訪問時無須引數,直接訪問 2 指標是傳值的,但指標的間接引用是傳位址的 3 陣...

C 傳值與傳位址

include struct object 傳值方式 void text1 object a 傳位址方式 void text2 object a int main text1 obj text2 obj return 0 1.傳值方式函式的形參是傳入的實參的乙份拷貝,形參是函式的區域性變數,只在函式...

C語言傳值操作

c語言傳值操作 c語言中的函式引數傳遞都是傳值操作,所以要使被呼叫函式改變呼叫函式的屬性內容,則需要傳遞所需修改屬性的指標 屬性位址。例1 void getmemory char p void test void 請問執行test 函式會有什麼樣的結果?答 因為getmemory函式接收的是str指...