常常會碰見指針最爲函數參數傳遞的問題void exchange(int x, int y)函數
{ int p=x; x = y; y = p; } //應該是下面這樣 調用函數 是值拷貝的 因此原來元素地址對應的值不會改變 上面的代碼徹底是無效的 void exchange(int *x, int *y) { int *p=x; *x = *y; *y = *p; }
//若是傳遞的是指針 就是直接在存放內容的地址中 對元素進行交換
寫一個給某個指針分配內存的函數:spa
void my_malloc(void* p, int size) { p = malloc(sizeof(int)*size); } //應該這麼寫: void my_malloc(void** p, int size) { *p = malloc(sizeof(int)*size); }
指針和變量同樣,也是有地址的,變量的值真是一個值 ,指針的值被解釋位一個地址。那指針存到哪裏了呢 。。。。指針
指針也是一個變量,和普通的變量同樣,都存在內存中。code
指針也是有地址的。blog
當給一個函數的參數傳遞一個變量是,這個變量是複製過去的。內存