指针问题,为什么结果是10,而不是0


#include <stdio.h>  
void main( )  
{   int a[ ]={1,2,3,4,5,6,7,8,9,0},*p;
    p=a;
    printf("\n%d",*p+9);  } 

第0个元素加上9啊
如果是 * (p+9),这才是输出0啊。先移动p指针到第9个数组元素位置,再取值
而*p+9是先取p数组的第0个元素值,然后再加上9,所以是1+9=10

 
#include <stdio.h>  
void main( )  
{  
    int a[ ]={1,2,3,4,5,6,7,8,9,0},*p;
    p=a;
    printf("\n%d",*(p+9));  
} 

加上括号才是0,因为先要移动第9个位置再取值

#include <stdio.h>  
int  main( )  
{   int a[ ]={1,2,3,4,5,6,7,8,9,0},*p;
    p=a;
    printf("\n%d",*(p+9));  } 

img

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632