一个C语言小问题

来源:百度知道 编辑:UC知道 时间:2024/05/02 19:19:27
void main(){
    int *p;
    int num[5]={10,20,21,40,50};
    p=&num[1];
    p++;
    *p=30;
    printf("%d",num[2]+*P);
}

这个输出结果等于多少是怎么得出来的?麻烦写出步骤,谢谢!

执行p=&num[1]后,p指向了num数组的第2个元素也就是20
然后执行p++,p指向了他后面的那个元素,也就是num的第三个元素,21
然后执行*p=30,把p所指向的那个元素的内容赋值为30,也就是p指向的元素不变,还是num的第三个元素,但是num的第三个元素num[2]的值已经变为了30
最后输出,此时num[2]==30,*p==30,输出的就是60

void main(){
int *p;
int num[5]={10,20,21,40,50};
p=&num[1]; //p指向num[1]的地址
p++; //p指向num[2]的地址
*p=30; //num[2]=30
printf("%d",num[2]+*P); //打印出30+30,就是60,结果是60
}