目錄
- 一.簡介
- 二.*p++
- 三.*++ p/++ *p
- 四.* (p++)與*(++p)
- 五.猜你喜歡
零基礎 C/C++ 學習路線推薦 : C/C++ 學習目錄 >> C 語言基礎入門
一.簡介
*p++/*(p)++/_(p++)/_p++運算規律:
- 1.如果
*和++/--都在指標變數的左邊,結合方向為從右到左; - 2.如果
*和++/--分別在指標變數的左邊/右邊,結合方向為從左到右; - 3.有括號的先執行括號的運算式,然后在執行規律 1 或者規律 2;
| A = | 第一步 | 第二步 | 得到計算結果 |
|---|---|---|---|
| *p++ | *p | p++ | 先取值,后指標++,A = *p; |
| *++p | ++p | *(++p) | 先指標++,后取值, A = *(++p); |
| ++*p | *p | (*p)+1 | 先取值,后值++ ,A = (*p)+1; |
| (*p)++ | *p | (*p)+1 | 先取值,后值++ ,A = (*p)+1; |
二.*p++
由于 ++ 和 * 分別在指標變數的左右兩邊,結合方向為自左向右,因此它等價與 (*p)++ ,先參考 p 的值,實作 *p 的運算,然后再使 p 地址自增 1 ,
/************************************************************************/
//@Author:猿說編程
//@Blog(個人博客地址): www.codersrc.com
//@File:C語言教程 - C語言 *p++/*(p)++/*(p++)/*p++
//@Time:2021/06/18 08:00
//@Motto:不積跬步無以至千里,不積小流無以成江海,程式人生的精彩需要堅持不懈地積累!
/************************************************************************/
#include "stdafx.h"
#include "stdio.h"
#include "windows.h"
int main()
{
int array[] = { 1,2,3,4 };
int *p = array;
printf("*p++ = %d \n", *p++); //先計算*p ,注意: i++ 與 ++i 區別
printf("*p = %d \n", *p);//由于*p++計算之后,p地址偏移+1,所以 *p = 2
system("pause");
return 0;
}
/*
輸出:
*p++ = 1
*p = 2
請按任意鍵繼續. . .
*/
三.*++ p/++ *p
由于 ++ 和 * 都在指標變數的左邊,結合方向為自右向左,因此它等價與 *(++p) 或者 ++(*p) ,
/************************************************************************/
//@Author:猿說編程
//@Blog(個人博客地址): www.codersrc.com
//@File:C語言教程 - C語言 *p++/*(p)++/*(p++)/*p++
//@Time:2021/06/18 08:00
//@Motto:不積跬步無以至千里,不積小流無以成江海,程式人生的精彩需要堅持不懈地積累!
/************************************************************************/
#include "stdafx.h"
#include "stdio.h"
#include "windows.h"
int main()
{
int array[] = { 1,2,3,4 };
int *p = array;
printf("*++p = %d \n", *++p);//先將指標地址偏移+1,在取值
p = array;
printf("++*p = %d \n", ++*p);//先對指標取值,在對值做自加運算
system("pause");
return 0;
}
/*
輸出:
*++p = 2
++*p = 2
請按任意鍵繼續. . .
*/
四.* (p++)與*(++p)
*(p++):先對p進行*運算,再使p自加;- **
*(++p):先使p自加,再進行*運算;** - ** 上面的原理和變數
i++和++i的原理相同;**
五.猜你喜歡
- 安裝 Visual Studio
- 安裝 Visual Studio 插件 Visual Assist
- Visual Studio 2008 卸載
- Visual Studio 2003/2015 卸載
- C 語言格式控制符/占位符
- C 語言邏輯運算子
- C 語言三目運算子
- C 語言逗號運算式
- C 語言 sizeof 和 strlen 函式區別
- C 語言 strcpy 和 strcpy_s 函式區別
- C 語言 memcpy 和 memcpy_s 區別
- C 語言 陣列定義和使用
- C 語言 陣列遍歷
- C 語言 陣列排序 – 冒泡法排序
- C 語言 陣列排序 – 選擇法排序
- C 語言 陣列排序 – 插入法排序
- C 語言 陣列排序 – 快速法排序
- C 語言 陣列下標越界
- C 語言 陣列記憶體溢位
- C 語言 陣列下標越界和記憶體溢位區別
- C 語言 二維陣列定義和使用
- C 語言 二維陣列行數和列數計算
- C 語言 指標宣告和定義
- C 語言 指標 p++ / p–
- C 語言 p++/§++/_(p++)/_p++
未經允許不得轉載:猿說編程 ? C 語言 *p++/*§++/(p++)/p++
本文由博客 - 猿說編程 猿說編程 發布!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/295935.html
標籤:C
