目录

零基础 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​​ 的原理相同;**

五.猜你喜欢

  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++​