C語言之指標 p 和 p 區別

2021-08-10 19:04:28 字數 960 閱讀 8986

在c語言的指標運算中,經常會碰到以下用法:*++p、++*p、(*p)++、*(p++),在解決問題前,先了解一下基礎:

1、 * 號和 ++ 符號屬於同級運算,且優先運算順序是從右到左。

2、a++ 表示:在當前一整句**中,a取原值,等該句**執行完畢(乙個分號表示一句**),下一句**執行前,a會在原值基礎上加1。可以通過以下**理解:

假設int a = 3;那麼

printf("%d", a++); // 輸出3

等價於printf("%d", a); // 輸出3

a++;

3、* 號在定義變數時,表示型別是指標,如 int *p = null 表示這是乙個叫p的指標;

* 號在運算時,表示取指標指向位址的內容,如下面列印語句的*p 表示取陣列的值;

下面通過**說明它們之間的區別:

int arr = ;

int *p = arr;

//------------輸出結果是在單獨執行下面**的前提下----------------//

//printf("%d\n", *++p); // 10 p先自+,然後*p,最終為10

//printf("%d\n", ++*p); // 6 先*p,即arr[0]=1,然後再++,最終為6

//printf("%d\n", *p++); // 5 先執行p++(沒自加成功前面有其他運算子,要先處理),再執行 *

//printf("%d\n", (*p)++); // 5 先*p,即*p=arr[0]=1,然後1++,該一整句執行完畢後,在下一句**執行前,arr[0] 會在原值基礎上加1 = 6

//printf("%d\n", *(p++)); // 5 效果等同於*p++

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

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

C語言之陣列和指標

如下便定義了乙個一維陣列 int arry 10 該陣列的維度為1,大小為10,包含了10個元素,從arry 0 arry 9 共10個資料元素,每個資料元素都是int型別,類似的可以定義其他資料型別的陣列,訪問陣列時,可以通過值在0 9的下標i訪問陣列中的第i 1個資料元素。一維陣列在初始化時,用...

C語言之指標

指標型別的本質分析 1 指標的本質 指標的本質 一種復合的資料型別。下面我將以下面幾個作為例子進行展開分析 a int p b int p c int parvalue 3 d int pfun 分析 所謂的資料型別就是具有某種資料特徵的東東,比如資料型別char,它的資料特徵就是它所佔據的記憶體為...