不看c++ primer 永遠不知道自己基礎有多差
函式的引數傳值一般有兩種方式:值傳遞,引用傳遞。
值傳遞有以下兩種形式:
void func( int a )
void func1( int *a )
對於 func 和func1都是通過拷貝記憶體來實現的
func1
int m = 10 ;
func1( int *a ) ;
//處理過程為: a = &m ;
//然後通過指標 *a 對 m進行間接操作
傳引用
void func2( int &a )
引用就是變數的乙個別名,不會發生記憶體的拷貝
典型的面試題:
void getmemory1(char *p)
void test1(void)
// p = str;
// p = malloc(...);
//p和str有半毛線關係?
char *getmemory2(void)
void test2(void)
char *getmemory3(void)
void test3(void)
//test3 中列印hello world,由於返回常量區,並且並沒有被改動過。test2中不一定能列印出hello world,由於指向的是棧。
void getmemory4(char **p, int num)
void test4(void)
//記憶體沒釋放
void test5(void)
}//str為野指標,列印的結果不得而知
void test6()
}//vc斷言失敗,執行錯誤
函式傳值傳參
var obj function x 內部宣告的變數不會影響外面的obj物件 console.log obj.n 2 obj 傳入的是乙個指標 值 x是obj指標的副本,兩者都指向同乙個物件 console.log obj.n 3 例子二 var x 1 function a x a x conso...
函式的傳值
函式在我看來最主要在於函式引數的傳遞,其餘的與正常程式設計無太大差別 函式引數傳值方式 1.傳數值 2.傳位址 3.引用 引用 型別名 引用名 變數名 相當於乙個變數的別名 int n 4 int r n 在宣告變數語句中作為引用 r 4 coutcout 引用例子 void swap int a,...
函式的傳值與傳址
這裡介紹一下,函式引數傳遞方式 傳值與傳址.希望看過後,大家對函式的了解更深刻.一 傳址方式 傳址方式是通過引用來實現在。還是我的習慣,用事實說話。看下面例子。例1 程式開始 fun1 int a,int b 這裡告訴編譯器,這個函式是傳址的,不是傳值的,所以所引用的引數在函式退出後值會改變 inc...