C语言 *p++/*(p)++/*(p++)/*p++ – C语言零基础入门教程
目录
- 一.简介
- 二.*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
", *p++); //先计算*p ,注意: i++ 与 ++i 区别
printf("*p = %d
", *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
", *++p);//先将指针地址偏移+1,在取值
p = array;
printf("++*p = %d
", ++*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++
本文由博客 – 猿说编程 猿说编程 发布!