C語言 *p++/*(p)++/*(p++)/*p++ - C語言零基礎入門教程


目錄

零基礎 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):先使自加,再進行運算;**
  • ** 上面的原理和變量 i++++i 的原理相同;**

五.猜你喜歡

  1. 安裝 Visual Studio
  2. 安裝 Visual Studio 插件 Visual Assist
  3. Visual Studio 2008 卸載
  4. Visual Studio 2003/2015 卸載
  5. C 語言格式控制符/占位符
  6. C 語言邏輯運算符
  7. C 語言三目運算符
  8. C 語言逗號表達式
  9. C 語言 sizeof 和 strlen 函數區別
  10. C 語言 strcpy 和 strcpy_s 函數區別
  11. C 語言 memcpy 和 memcpy_s 區別
  12. C 語言 數組定義和使用
  13. C 語言 數組遍歷
  14. C 語言 數組排序 – 冒泡法排序
  15. C 語言 數組排序 – 選擇法排序
  16. C 語言 數組排序 – 插入法排序
  17. C 語言 數組排序 – 快速法排序
  18. C 語言 數組下標越界
  19. C 語言 數組內存溢出
  20. C 語言 數組下標越界和內存溢出區別
  21. C 語言 二維數組定義和使用
  22. C 語言 二維數組行數和列數計算
  23. C 語言 指針聲明和定義
  24. C 語言 指針 p++ / p–
  25. C 語言 p++/§++/_(p++)/_p++

未經允許不得轉載:猿說編程 » C 語言 *p++/*§++/(p++)/p++

本文由博客 - 猿說編程 猿說編程 發布!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM