利用指標引用陣列元素,比較方便靈活,有不少技巧。在專業人員中常喜歡用一些技巧,以使程式簡潔。在看別人寫的程式時可能會遇到一些令人混淆的情況,要仔細的分析。
請分析下面幾種情況(設p開始時指向陣列a的首元素(即p=a)。
① 分析:
p++;
* pi;
p++使p指向下一元素a[1]。然後若再執行* p,則得到下乙個元素 a[1]的值
②
*p++;
由於++和*同優先順序,結合方向為自右而左,因此它等價於 *(p++)值。
先引用p的值然後,實現*p的運算,然後使p自增1
例8.7 的第2個程式中最後乙個 for語句
for(i=0;i<10;i++,p++)
printf("%d", * p);
可以改寫為
for(i=0;i<10;i++);
printf("%d」,*p++);
* p就是下乙個元素的值。
③ *(p++)與*(++p)的作用是否相同?
不相同前者是取*p值然後使p加1;
後者是先使 p加1,再取*p,若p初值為a(即&a[o]),
如果輸出*(p++)得到 a[0]的值,
而輸出*(++p),得到a[1]的值。
④++(*p)表示p指向元素加1,如果p=a,則++(*p)相當於++a[0],若a[0]的值為3,則在執行++(*p)(即++a[0])後a[0]的值為4。注意:是元素a[0]的值加1,而不是指標p的值加1;
⑤ 如果 p當前指向 a陣列中第i個元素 a[i],則:
*(p--)相當於a[i--],先對p進行「*」運算(求p所指向的元素的值),再使 p自減。
*(++p)相當於a[++i]先使p 自加,再進行「*」運算。
*(--p)相當於a[--i]先使 p 自減,再進行「*」運算。
將++和--運算子用於指標變數十分有效,可以使指標變數自動向前或向後移動,指
例如,想輸出 a陣列的100個元素,可以用下面的方法:
p=a;
while(p或
p=a;
while(p但如果不小心,很容易弄錯。
因此在用*p++的運算時,定要十分小心,清楚是先取p值還是先使p加1。
有什麼不足的地方歡迎各位大佬指正
作業系統:windows10
軟體:devc++
編譯器:tdm-gcc 4.9.2 64-bit release
uma是什麼意思 UMA是什麼意思?
展開全部 uma 不明生物 是636f707962616964757a686964616f31333431376537動畫 進化戰記 betterman 中的一類人造怪物的統稱,是生命工學食料研究所 b.p.l.所長梅崎博士製造出來 協助他利用阿尼瑪斯之花 大量製造蛋白質 具有驚人攻擊性的怪物。阿拉...
是什麼意思?
meta是html中的元標籤,其中包含了對應html的相關資訊,客戶端瀏覽器或伺服器端的程式會根據這些資訊進行處理。http equiv類似於http的頭部協議,它回應給瀏覽器一些有用的資訊,以幫助正確和精確地顯示網頁內容。content 內容型別 重要!這個網頁的格式是文字的,網頁模式 chars...
In 是什麼意思
函式引數型別前 in 代表什麼 在visual c 中屬於sal批註,是為了編譯系統在分析 時發現缺陷用的 表示是乙個輸入引數。可以定義乙個 in 的巨集,這個巨集什麼都不做,就是形如這樣的。define in void fun int in x 等同於 void fun int x 但是他給出了引...