學習c語言指標時 p 和 p等一系列問題

2021-09-11 18:58:38 字數 947 閱讀 3336

寫出列印的結果。

#include int main()

; int *p = a;

printf("%d\n%d\n%d\n%d\n%d\n%d\n%d\n",*p,*(++p),(*p)++,*p,*p--,--(*p),*p);

return 0;

}

理解:

第乙個:*p。指標指向陣列第乙個元素,則 *p為陣列的第乙個值,所以為1。

第二個: *(++p) 。括號優先順序最高,++p表示指標已經指向了陣列下乙個元素,再經過,所以輸出2。

第三個:(*p)++。因為++操作在後面,例如a++,是先輸出a值,然後再a=a+1,輸出的並不是a+1。因此本次首先取此時指標指向的值即2,輸出值為2;

然後指標指向不變,改變了陣列的內容,*p = *p + 1;

第四個:*p。由於在第三個時做了很多鋪墊,此時直接輸出第二個值3。

第五個:*p- -。 同理,由於- -在後面,是在輸出後才完成- -的操作的。首先還是直接取值輸出,因此還是輸出3。之後p=p-1,指標指向了第乙個。

第六個:- -(*p)。因為- -在前以及括號優先順序最高,對此時指標指向的值進行減1後輸出。因此輸出為0,陣列變為0,3,3,4,5。

第七個:此時指標指向第乙個值,為0,因此輸出0。

用C語言編寫一系列簡單的程式

1 列印九九乘法表 include int main void printf n 2 使用 列印矩形 include int main void printf n 3 使用 列印平行四邊形 include int main void else printf n 4 使用 列印直角三角形 includ...

C語言之指標 p 和 p 區別

在c語言的指標運算中,經常會碰到以下用法 p p p p 在解決問題前,先了解一下基礎 1 號和 符號屬於同級運算,且優先運算順序是從右到左。2 a 表示 在當前一整句 中,a取原值,等該句 執行完畢 乙個分號表示一句 下一句 執行前,a會在原值基礎上加1。可以通過以下 理解 假設int a 3 那...

C語言指標 p 和 p及 p的區別

今天覆習了一下c語言的指標題目,發現在很多 結果題目中都出現了表示式 p p和 p,而這幾個表示式特別容易混淆。那麼通過什麼方式區分他們呢,答案就是運算子優先順序。和 指標訪問運算子 優先順序相同,根據從右往左的結合性,因此等價於 p 又因為後置 是先使用再自加,所以先取值 p,然後再讓p加1.p ...