指针访问数组
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;
}