当前位置:   article > 正文

C语言指针*p++,(*p)++,*(p++),++(*p),++*p,++*p++_指针的++在前后或者括号怎么判断

指针的++在前后或者括号怎么判断

指针访问数组

int main()
{
	int a[] = {1,2,3,4,5};
	int *p = a;
	
	//优先级顺序是     括号 》 前++ 》 * 》 后++
	//前++改变的是数组中的值,而*号只是一个指针用来访问数组的记号

	//后++在(*p)++ 这种情况出现,先看括号,是指针访问值,然后值进行自增
	//后++在 *p++ 和 *(p++)这两种情况中,后者有括号,肯定是先看括号,指针右移一位,访问数组中的下一个元素
	//同时出现后++与*号,且没有括号,当成指针移动再访问数组

	//也就是说,除了有括号和前++的情况,一旦通过出现++和*,都需要通过指针移动来访问数组


	printf("%d\n", *p); //结果为1

	printf("%d\n", *(p + 1));//结果为2,访问数组中第二个元素

	printf("%d\n", *p++);//结果为1,并且将p指针往右边移动一位(通过自增来实现)

	printf("%d\n", *(p++));//结果2,通过p指针访问的是数组中的第二个元素,另外p指针往右边移动一位,后++

	printf("%d\n", *p);//结果为3,通过p指针访问的是数组中的第三个元素

	printf("%d\n", ++*p);// 结果为4,前++运算符改变了数组中的值,然后通过p指针访问的是数组中的第三个元素

	printf("%d\n", ++(*p));//结果5,前++运算符改变了数组中的值,然后通过p指针访问的是数组中的第三个元素

	printf("%d\n", (*p)++);//结果为5,后++改变的是数组在指定位置的值

	printf("%d\n", *p);//结果为6

	printf("%d\n", ++*p++);//结果为7

	printf("%d\n", *p);//结果为4

	for (int i = 0; i <  5; i++)
	{
		printf("%d", a[i]);//通过移动 p的位置来访问数组
	}
	return 0;

	
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/79766
推荐阅读
相关标签
  

闽ICP备14008679号