int main(int argc, char* ar**)
void resnet(int *p)
{ std::cout << "p的位址" << p<1.定義形參為i,在傳入函式之前值為100,位址為fd04,
2.將i的位址作為引數傳入形參*p,此時拷貝的是i的位址(值傳遞拷貝的是i的值),將i的位址拷貝過來以後p就是i的位址了即p==fd04,因為現在100就存在fdd4這個位址中,所以輸出*p就得到了100.
3.重新定義乙個變數q=0,並輸出位址,可知q=0,其位址為fca4。
4.將q的值放在p的位址裡,即p還是fd04,但是*p=0,裡邊放的值變了,此時輸出*p=0,p=fd04;但是此時p=fce0(賦值過程可能有其他操作占用了一段記憶體)
5.呼叫函式之後i的值由100變為了0,i的位址沒有發生變化,仍然是fd04。
同理:void resnet(int *p)
{ std::cout << "p的值" << *p << std::endl;
std::cout << "p的位址" << p《指標傳遞的是乙個變數或者乙個值的位址,但是它本身還是採用值傳遞的方式。即你不能使它指向另外一塊位址,但是你可以改變它指向的空間裡存的值。
關於指標傳遞和指標的引用傳遞
指標傳遞的實質 指標傳遞引數本質上是值傳遞的方式,它所傳遞的是乙個位址值。值傳遞過程中,被調函式的形式引數作為被調函式的區域性變數處理,即在棧中開闢了記憶體空間以存放由主調函式放進來的實參的值,從而成為了實參的乙個副本。引用傳遞的實質 在引用傳遞過程中,被調函式的形式引數雖然也作為區域性變數在棧中開...
關於指標傳遞和指標的指標
一開始沒有理解,導致對這個概念非常的模糊和不解。最近看完 徹底搞定c語言指標詳解 裡面關於指標的指標的解釋有了頓悟感。其實,很好理解,是我把它想複雜了。我們都知道,實參和形參的區別。形參並無法改變實參,這就是值傳遞。還有一種叫指標傳遞,實質就是去操作指標的指向物件。例子如下 exchg2 int p...
關於this指標的傳遞問題總結
1 cdecl成員函式 通過ecx傳遞this指標 mov ecx,物件的位址 call 成員函式 2 stdcall成員函式 通過堆疊傳遞this指標 push 物件的位址 call 成員函式 用非靜態成員作為執行緒函式 原理分析 1.該執行緒的主函式為類的非靜態成員函式,所以它認為他的呼叫者會為...