-
範圍。 你靜態字元 *chh;
static char *ch1;雖然兩個指標指向的位址沒有變化,但你有沒有想過它們指向的記憶體位址是否已經釋放,char chc[10]; 它是本地的,函式已經結束,生命週期已經結束,你正在嘗試使用 void times() 中的指標訪問它。
人已經吊死了,你還想挖鞭子屍體,你太狠了。
還有其他方法可以做到這一點,但我建議你先改變它。
char chc[10];,將其更改為全域性變數,並自行調整。
-
哇,好久不見了,有什麼問題? 你什麼都不說,我怎麼回答?
-
清楚地描述問題,這個程式中是否有錯誤,或者你無法獲得想要的結果、、、
-
靜態:位址不會改變,它將始終在記憶體中,直到程式終止。
-
static 更改區域性變數的持續時間。
例如,你在這裡,在第一次執行之後。
CHH 為 15(例如)。
在下一次執行之前,*chh 仍然是 15
static 更改了全域性變數的可見範圍,原本全域性變數是所有程式都可以訪問的,如果新增了 static,則只能由這個子程式訪問。
就像不止乙個的情況一樣。 c(.cpp) 檔案,為了防止其他原始檔,定義了乙個同名的全域性變數,並在其前面新增乙個靜態變數來解決問題。
-
int a[2][3], p[3];
分析:對於 a,毫無疑問 a 是乙個二維陣列,並且 zhi 的值指向 int 型別的原點 dao 位址。 裡面。
對於 p,第乙個 p 先到先'[ ]'與 p[3] 結合,表示 p-是乙個陣列,而 p 則是'*'組合的' *p[3] ',表示儲存在 p 陣列中的時間指標變數,最後將其與 int 型別組合' int *p[3] ',這表示陣列是使用 int 型別的指標儲存的。
p[0]=&a[1][2];
因此,p[0] 的值是指向型別 int 的指標。
a[1][2] 的值是乙個 int 型別,加上'&'結果是指向 int 型別的指標。
所以 p[0]=&a[1][2]; 建立。
建議ZL檢視“讓你不再害怕指標”。
-
*p[3] 是乙個指標陣列,每個陣列元素都是乙個 int 指標。
a 的錯誤是 p 是指向此指標陣列的指標,如果更改 p 的值,則此指標陣列將成為垃圾。
-
*p[3] 這是指標陣列,裡面的元素是指標。
通常,A 沒問題,但可能是乙個錯誤。 需要強制轉彎,但定址是可以的。
-
如果有定義語句:zhiint a[2][3], *p[3]; 那麼以下語句中的正確 DAO 是 (c)。
a. p=a;錯誤,不合時宜的答案不匹配。
錯誤,型別不匹配。
沒錯。 錯誤,型別不匹配。
測試程式如下。 下面的程式可以編譯成功,用其他東西替換它不會成功。
#include
void main()
從右到左運算,-i--所以先計算-i--,運算等級比較高,所以可以寫成-(i--)i--對於8,加乙個-號,所以-i--是8,這時候i--after,i=7,然後-i++是一樣的,可以寫成-(i++)所以-i++是-7,此時i++變成8,--i,執行前減去1,所以--i是7,此時i=7,++i是一樣的,在執行i之前加上1,所以++i是8,此時i=8,然後計算i--,i--仍然等於8,那麼i減一變成7,i++,i++等於7,然後i++,i=8, 所以最後 i=8,然後依次列印出來,注意操作是從右到左,而是從左到右列印 i,i++,i--,i,--i,-i++,i-,這樣複選標記結果就出來了。
C++是一種物件導向的語言,不是很好學,因為它比較靈活,所以在做程式的時候有很多問題需要考慮! 由於硬體的直接操作,它繼承了C語言的優點,所以效率很高,一般用於底層和嵌入式系統。
這個問題需要了解系統在編譯時會給靜態變數分配記憶體,函式呼叫結束後不會釋放它們占用的記憶體單元,即變數的值是下次函式呼叫時上乙個函式呼叫的值。 >>>More