2016-08-11 78 views
0
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; 
+1

確實需要在點擊代碼之前學習基礎知識 –

+0

重新編輯問題會很好,所以元文本「在此處輸入代碼」消失,並且兩個代碼塊保持原樣;-) ...並且請每個問題只有一個問題......它有點像任何C(指針)教程那裏或現有的SO答案已經應該幫助... – Dilettant

+1

你可以點擊[編輯]按鈕來完成你的問題。 – user3386109

回答

0

char *const p="Hello";pconst pointer到(非常量)char。你可以改變實際的字符,但不是指向它的指針。所以,它初始化後不能指向任何其他內存位置。重要的是要注意,在這個聲明中,初始化必須在聲明這個指針時完成。

char A[10]="ANSHU";A是一個數組對象而不是pointer。所以你不能使用操作A++作爲數組對象。

In int *const A;A是一個const指針,指向int。所以,指針不能改變,指向值可以改變。

1

陣列的聲明在你宣佈p作爲const的第一個程序,而不管它的類型。所以你不能在第一次初始化後分配它。 p++嘗試分配給pp+1的值,從而失敗。

在第二個程序中,您使用了一個數組。陣列的名稱,A實際上就像標籤。你可以用它作爲地址來傳遞,但你不能改變它。