关于*p++ *(p++) (*p)++ *++p *(++p) ++*p ++(*p)

最近刚复习完指针,刚好朋友问了我这几个表达式的含义*p++  *(p++)  (*p)++  *++p  *(++p)  ++*p   ++(*p)  就写了这段代码帮助理解  求指正!

// zhizhen.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

int main(int argc, char* argv[])
{    
	
	  
	int test1,test2,test3,*p,i;
       //*p++与*(p++)
		//++比*优先级高所以*p++可以看成*(p++)  就是一样的啊  测试一下就是这样的 
		i=176;
		p=&i;
		test1=*p++;		//执行结束后  指针p增1  指向的已不是变量i   大概是i地址的下一个地址 打印text2显示了这个地址的值  所以下面要再重新给指针p赋值来测试	
		test2=*p;
		printf("%d程序缘%d\n",test1,test2);
		p=&i;
		test3=*(p++);
		printf("%d\n",test3);//由此得出  *p++  和 *(p++) 是一样的    先将*p赋给test变量  然后p自增1

		
		//(*p)++
		i=176;
		p=&i;
		test1=(*p)++;
		test2=*p;
		printf("%d程序缘%d\n",test1,test2);//由此得出 (*p)++是先将*p赋给test变量 然后*p(即i)自增1

		//*++p与*(++p)由优先级也可得出他们两个也是相等的  测试一下
		i=176;
		p=&i;
		test1=*++p;		
		p=&i;
		test2=*(++p);
       	printf("%d程序缘%d\n",test1,test2);//由此得出  两个表达式都是是先自增p 指向下了下一个地址 然后取其值赋给test 

		//++*p   ++(*p) 他们两个也是相等的  测试一下
		i=176;
		p=&i;
		test1=++*p;	
		i=176;
		p=&i;
		test2=++(*p);
       	printf("%d程序缘%d\n",test1,test2);//由此得出  两个表达式都是是先自增*p(即i) 再把*p赋给test 

	return 0;
}


 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值