#include
using namespace std;
void modifypointer(int*);
void modifypointer(int**);
int main(){
int *pointer;
int n = 100;
pointer = &n;
modifypointer(pointer);
cout << "呼叫modifypointer(int*)" << *pointer << endl;
modifypointer(&pointer);
cout << "呼叫modifypointer(int**)" << *pointer;
return 0;
void modifypointer(int *pointer){
int k = 1;
pointer = &k;
void modifypointer(int **pointer){
int k = 1;
*pointer = &k;
1、將指標 pointer 作為引數傳遞給函式 modifypointer(int* pointer) 時,實際傳遞的是指標的值(&n),而不是指標本身(&pointer)
---->函式 modifypointer(int* pointer)也會新建乙個int *pointer 的區域性變數,來接收 &n(即是 int *pointer;pointer = &n;的簡寫)
所以在 modifypointer(int* pointer) 中修改 pointer (pointer = &k;)時修改的是區域性的 pointer,而不是從 main 函式傳遞過來的
全域性pointer,所以不會影響 main 函式中的 pointer
2、將指標 pointer 作為引數傳遞給函式 modifypointer(int** pointer) 時,實際傳遞的值是(&pointer),函式modifypointer(int** pointer)
會新建乙個 int **pointer(區域性) 的區域性變數來接收 &pointer(全域性)(即是 int **pointer(區域性);pointer(區域性) = &pointer(全域性)
,-----此時,pointer(區域性) == &pointer(全域性);*pointer(區域性) == pointer(全域性) == &n;**pointer(區域性) == *pointer(全域性)== n)
當執行 *pointer = &k時,實際執行的是 pointer(全域性) = &k;所以此時修改區域性的 pointer 也修改了 main 函式傳遞過來的全域性的 pointer,
一級指標與二級指標
如下圖所示,整型指標xptr指向變數x的位址。原始碼 include int main 實現方法一如下圖所示,先為二級整型指標ptr分配空間,然後賦值。原始碼 include include int main printf n return 0 執行結果 實現方法二 如下圖所示,先為二級整型指標pt...
一級指標二級指標
例如 int p null int代表指標p指向的資料型別是int型,代表這是乙個指標變數,1 指標變數儲存的內容是指向的變數的位址 2 在使用sizeof判斷指標的位元組數時,在32位機器上為4個位元組,在64位機器上為了相容,仍然是四個位元組大小 3 小知識點,不同型別的指標除了指向的變數資料型...
二級指標與一級指標重溫
今天在和同學討論為了介面的一致性,怎麼處理野指標的問題,我就想在以前寫過的鍊錶中練習一下。選擇了在雙向迴圈鍊錶中erase節點時,傳入二級指標並置空他。沒想到遇到了問題,曾經以為對二級指標,一級指標的問題已經了解了,因為在單鏈表中,頭插,尾插中已經訓練過,在鍊錶為空時有3種處理辦法。第一種,是需要傳...