1樓:劉偉奇
陣列名就是陣列首元素的位址,是乙個常量指標,始終指向&a[0]那整型變數作模擬,對於這麼乙個整型產量
int n;
你可以給n賦值
n=5;
也可以讓他原地加1
n++;
可以在常量身上加變數
p=5+n;
但是你可以「5++」嗎?
陣列名作為乙個常量指標也一樣。
2樓:深黑灰
P是乙個指標變數,a是乙個陣列,a實際上是乙個常指標,a+1得的是乙個位址,及a的值加一,不影響a本身。而a++影響。
我們可以先做個比喻
int i=5,
i++;/i=6
(i+5)++/報錯。
為什麼會這樣,因為i+5實際上得的是乙個常量,自增的作用物件只能是變數。
同理,a+5得的是乙個常量位址,a++是說對a本身加一,a會被改變,但a是常指標,所以a不能改變,報錯。
3樓:
a是陣列名,也是陣列所在連續記憶體單元的首位址,它是個常量,根本不能做++運算。
其實相關問題也簡單,就是指標的加減運算不同於數字的加減,指標變數+1,指標變數內儲存的值改變1個基型別所佔空間的大小。比如int * p, int佔4個byte,現在令p=a, p儲存變數a的位址1238,當p+1後,p不是變成了1238+1=1239,而是1238+4=1242,因為p+1的意義是p指向後1個物件。減法同理。
如果是double *, strcut node *, 則指標移動造成的指標變數改變又根據相應基型別有所不同。
4樓:黃哥
陣列名和指標之間有乙個不同之處,指標是乙個變數,因此,在C 語言中,語句
pa = a和 pa++ 都是合法的,但陣列名不是變數,因此,類似於a = pa 和a++ 形式的語法是非法的。
pa 是 int *pa
a 是陣列
上面的文字見下面書的85頁
《C程式語言(原書第2版·新版典藏版)》原著即為C語言的設計者之一DennisM.Ritchie和著名的計算機科學家BrianW.Kernighan合著的一本介紹C語言的經典著作。
我們現在見到的大量論述C語言程式設計的教材和專著均以此書為藍本。原著第1版中介紹的C語言成為後來廣泛使用的C語言版本——標準C的基礎。人們熟知的「hello,world」程式就是由《C程式語言(原書第2版·新版典藏版)》首次引入的,現在,這一程式已經成為所有程式語言入門的第一課。
原著第2版根據2023年制定的ANSIC標準做了適當的修訂,引入了新的語言形式,並增加了新的示例。通過簡潔的描述、典型的示例,作者全面、系統、準確地講述了C語言的各個特性以及程式設計的基本方法。對於計算機從業人員來說,《C程式語言(原書第2版·新版典藏版)》是一本必讀的程式語言方面的參考書。
int a 10 和int a 10 意義上有什麼區別嗎?
guozhi int a 10 是用來存放整型資料的 int a 10 是用來存放指標的,並且是整型指標 指標類似書的目錄,給計算機索引資料用的 踏雪飛鴻 這個2個都是陣列,只不過陣列裡面儲存的內容不同。int a 10 儲存10個整型資料的陣列。int b 10 儲存10個整型指標的陣列。void...
同一區域網下的電腦和手機為什麼不能互ping?
可能存在的原因如下 1 無線路由器設定問題,是否開啟了無線AP隔離,導致無法正常訪問 AP隔離,AP Isolation,是指開啟後,使各個連線的電腦間不能相互訪問,起到隔離作用,來保護不同使用者間的資料安全。適合大型的會議室 酒店 機場等公共場所的無線網路建設,不適合普通的家庭使用者 實測本機IP...
為什麼Redmik40和小公尺10s同為一億畫素最大數碼變焦卻不一樣
大頭熊 因為兩塊鏡頭是不一樣的。k40pro 那塊鏡頭是紅公尺note9pro的同款鏡頭HM2,也許是小公尺10那塊鏡頭的閹割版。而小公尺10s用的是小公尺10同款鏡頭,比k40pro 那塊鏡頭要好。具體引數對比 k40pro 的鏡頭引數 1 1.52英吋 9合1畫素 2.1 m融合大畫素 7p鏡頭...