C語言的指標問題

2023-01-04 07:00:15 字數 822 閱讀 9728

1樓:

指標說白了就是和變數一樣的東西。指標就是儲存了記憶體地址。

比如你輸出個指標。

int *i = new int();

std::cout<

得到的是一行16進位制的正整數。

而這個正整數i的內容。而這個內容對應的是一個記憶體地址。

2樓:匿名使用者

因為你在moveblock中的操作是要對主函式中的x,y的值的改變,此時就只能傳地址了,這樣在moveblock中對x,y值的操作才能反映到主函式中的x,y.

如果不用指標,那就是值傳遞,在moveblock中對x,y的操作不會影響對主函式中的x,y。

這主要是傳地址與值傳遞的區別。以下為它們的區別:

函式引數傳遞機制問題在本質上是呼叫函式(過程)和被呼叫函式(過程)在呼叫發生時進行通訊的方法問題。基本的引數傳遞機制有兩種:值傳遞和地址傳遞。

以下討論稱呼叫其他函式的函式為主調函式,被呼叫的函式為被調函式。

值傳遞(passl-by-value)過程中,被調函式的形式引數作為被調函式的區域性變數處理,即在堆疊中開闢了記憶體空間以存放由主調函式放進來的實參的值,從而成為了實參的一個副本。值傳遞的特點是被調函式對形式引數的任何操作都是作為區域性變數進行,不會影響主調函式的實參變數的值。

地址傳遞(pass-by-reference)過程中,被調函式的形式引數雖然也作為區域性變數在堆疊中開闢了記憶體空間,但是這時存放的是由主調函式放進來的實參變數的地址。被調函式對形參的任何操作都被處理成間接定址,即通過堆疊中存放的地址訪問主調函式中的實參變數。正因為如此,被調函式對形參做的任何操作都影響了主調函式中的實參變數。

C語言指標問題,C語言指標問題

include int main void max min sz 0 for i 1 ip i printf max d position d n max,j 1 printf min d position d n min,k 1 return 0 c語言指標問題 10 最好貼上完整程bai序 或標...

C語言的問題,指標陣列,c語言指標陣列

改變不了,字串常量是改不了的,你可以試試char p aaaaa p 1 b 這樣是改不了的 只能定義二維陣列才可以改 char p 3 100 這樣才可以改,不要問為什麼,字串常量就是不能改 直接讓指標指向另一個字串即可 p 0 aaaa 這樣定義指標指向的字串是無法修改的。c語言指標陣列 p是i...

c語言指標問題

指標變數和普通變數沒有什麼區別,指標32位四位元組,裡面儲存的是一個記憶體空間的地址,就像一個整形變數int a,a就可以代表一個整數,一個指標變數int p,p就可以代表一個地址資料,而 地址,代表去這個地址指向的記憶體空間取出裡面的內容,因此如果是要取出這個指標所指向的記憶體裡面的內容就是 p,...