void main(){
char *const p="Hello";
p++; // causes error object p non modifiable
}
void main(){
char A[10]="ANSHU";
A++; // here causes lvalue problem
}
所以,我的問題是,什麼是這兩個節目和下一個問題之間的區別是這樣C編程指針和數組
int *const A;
void main(){
char *const p="Hello";
p++; // causes error object p non modifiable
}
void main(){
char A[10]="ANSHU";
A++; // here causes lvalue problem
}
所以,我的問題是,什麼是這兩個節目和下一個問題之間的區別是這樣C編程指針和數組
int *const A;
在char *const p="Hello";
p
是const pointer
到(非常量)char
。你可以改變實際的字符,但不是指向它的指針。所以,它初始化後不能指向任何其他內存位置。重要的是要注意,在這個聲明中,初始化必須在聲明這個指針時完成。
char A[10]="ANSHU";
A
是一個數組對象而不是pointer
。所以你不能使用操作A++
作爲數組對象。
In int *const A;
A
是一個const指針,指向int。所以,指針不能改變,指向值可以改變。
陣列的聲明在你宣佈p
作爲const
的第一個程序,而不管它的類型。所以你不能在第一次初始化後分配它。 p++
嘗試分配給p
p+1
的值,從而失敗。
在第二個程序中,您使用了一個數組。陣列的名稱,A
實際上就像標籤。你可以用它作爲地址來傳遞,但你不能改變它。
確實需要在點擊代碼之前學習基礎知識 –
重新編輯問題會很好,所以元文本「在此處輸入代碼」消失,並且兩個代碼塊保持原樣;-) ...並且請每個問題只有一個問題......它有點像任何C(指針)教程那裏或現有的SO答案已經應該幫助... – Dilettant
你可以點擊[編輯]按鈕來完成你的問題。 – user3386109