赞
踩
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; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。