C语言 *p++/*(p)++/*(p++)/*p++ - C语言零基础入门教程

目录

零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门

一.简介

*p++/*(p)++/_(p++)/_p++运算规律:

  • 1.如果 *++/--都在指针变量的左边,结合方向为从右到左;
  • 2.如果 *++/--分别在指针变量的左边/右边,结合方向为从左到右;
  • 3.有括号的先执行括号的表达式,然后在执行规律 1 或者规律 2;
A =第一步第二步得到计算结果
*p++*pp++先取值,后指针++,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++

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猿说编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值