C语言指针部分

来源:百度知道 编辑:UC知道 时间:2024/06/27 05:37:39
设int arr[]={6,7,8,9,10};
int *ptr=arr;
*(ptr++)+=123;
printf(”%d,%d”,*ptr,*(++ptr));
请问打印出的结果是什么? 是6,130吗?

8,8

int *ptr=arr; //ptr指向arr[0]
*(ptr++)+=123; //arr[0]的值加上123,然后ptr指向arr[1]
printf(”%d,%d”,*ptr,*(++ptr));
//C语言中函数参数入栈时是从右向左入栈的,所以先执行++ptr,ptr指向了arr[2],然后将两个arr[2](即8)入栈.

答案应该是8,8。赋值语句将6加了123,同时指针指向下一个元素7。printf中,由于系统是从右往左计算,所以结果都是数组的第三个元素8。

打印出来是8,8