指针应用
时间:2010-05-06 来源:sjtlqy
#include <stdio.h>
int main()
{
int x[] = {10, 20, 30};
int *px = x;
printf("%d,", ++*px); //11,10
printf("%d\n", *px);
px = x;
printf("%d,", (*px)++);//11,10
printf("%d\n", *px);
px = x;
printf("%d,", *px++);21,21
printf("%d\n", *px);
px = x;
printf("%d,", *++px);20,20
printf("%d\n", *px);
return 0;
}
刚又仔细确认了下,*和++两个运算符的优先级相同,而且都是自右向左方向结合
假如p是一个整形指针变量 int *p
*p++相当于*(p++)
++*p相当于++(*p)
*++p相当于*(++p)
自己复习一下基础,同时分享出来,希望对大家有所帮助
easy:
++*px = ++(*px) = 11
*px = 11
此时数组变为:x[] = {11, 20, 30}
(*px)++ = 11, 数组变为: x[] = {12, 20, 30}
*px = 12
*px++ = *(px++) = 12, 不是20
*px = 20
*++px = *(++px) = 20
*px = 20
所以答案是:
11, 11
11, 12
12, 20
20, 20
int main()
{
int x[] = {10, 20, 30};
int *px = x;
printf("%d,", ++*px); //11,10
printf("%d\n", *px);
px = x;
printf("%d,", (*px)++);//11,10
printf("%d\n", *px);
px = x;
printf("%d,", *px++);21,21
printf("%d\n", *px);
px = x;
printf("%d,", *++px);20,20
printf("%d\n", *px);
return 0;
}
刚又仔细确认了下,*和++两个运算符的优先级相同,而且都是自右向左方向结合
假如p是一个整形指针变量 int *p
*p++相当于*(p++)
++*p相当于++(*p)
*++p相当于*(++p)
自己复习一下基础,同时分享出来,希望对大家有所帮助
easy:
++*px = ++(*px) = 11
*px = 11
此时数组变为:x[] = {11, 20, 30}
(*px)++ = 11, 数组变为: x[] = {12, 20, 30}
*px = 12
*px++ = *(px++) = 12, 不是20
*px = 20
*++px = *(++px) = 20
*px = 20
所以答案是:
11, 11
11, 12
12, 20
20, 20
相关阅读 更多 +