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;

	
}

猜你喜欢

转载自blog.csdn.net/qq_34859243/article/details/88146750
今日推荐