已采納回答 / Vaquish
第一個是在getMax(*arr,count)的作用域下進行輸出,所以調用getMax(*arr,count);第二個是在getMax(numArr[0],numArr[2])的作用域下輸出,調用的是getMax(int a,int b);所以,兩個不一樣
2015-07-11
已采納回答 / onemoo
你要理解變量類型的重要性。p的類型是指向const int的指針,如果你解引用這個指針的話,得到的會是const int類型。p的類型決定了這樣的性質,這性質與p到底指向誰是無關的。所以即使p指向的是個非const的int對象,但如果你通過p來訪問所指的內容的話,這內容還是會被當作const的。就是說你無法通過*p來修改它,所謂的“*p的值無法修改”就是這個意思。當然 i 本身是普通的int,自然可以通過 i 來任意修改了。故const int指針可以指向const int對象,也可以指向普通的int對象...
2015-07-09
已采納回答 / onemoo
參數列表中的 *arr 是可以寫成 int arr[] 的。在函數聲明的參數列表中聲明的數組參數,是會被視作指針的。抱歉,請忽略上一條回答,我沒有注意到這個是C++問題!剛才的回復中可加入的限定符是C語言的特性,在C++中沒有這個特性。在C++14中,也僅能在[]中加入constexpr這一個限定符。
2015-07-07
已采納回答 / onemoo
準確地表達應該是:p是一個指向const int型變量的指針,所以p無法修改其指向的int對象。但p本身不是const的,所以能被改變(也就是可以指向別的int)。*p是解引用p以得到p指向的對象。代碼中第一個*p得到x,但只是用來讀取x的值,并沒有修改x的內容。然后代碼將y的地址賦予了p,再次*p時就得到了y,同樣代碼中也沒有更改y的內容,所以說沒有改變*p的值。 ?那個講解只說“*p”容易會引起理解上的歧義。還應該注意到一點:p是一個指向const int的指針,說明p可以指向const int對象,...
2015-06-22
已采納回答 / onemoo
或的關系。但注意這里有坑:函數在傳參時,參數是可以進行自動轉換的。假如調用函數時傳的參數類型沒有完全匹配任何一個可重載函數,而且都可以進行類型轉換的話,編譯器會報歧義錯誤的。
2015-06-20
已采納回答 / JACK630
上面一組:const int x = 3 表示x為一個常量,其值為3,且x的值是不能改變的;int *y = &x 定義了一個指針變量y,y指向x,y存放的是x的地址,改變y的的值也就相當于改變了x的值,這與常量x不能被改變相沖突,所以說有危險;下面一組:可以正常使用;
2015-06-05