图中的C语言最后运行结果是什么??要分析过程!!过程很重要
发布网友
发布时间:2023-09-30 00:28
我来回答
共4个回答
热心网友
时间:2024-11-30 20:22
结果是:,8,8
*ptr=arr; //ptr指向数据arr第一个元素
*(ptr++) += 123; //根据运算符优先级,先计算ptr++,先使用,后++的,故ptr++还是指向arr第一个元素即arr[0],*(ptr++)就是arr[0],*(ptr++) += 123相当于arr[0]+=123, arr[0]=6+123=129
执行完本句,ptr指向arr[1]
printf函数执行顺序是自右向左的,所以先计算*(++ptr)再计算*ptr,可知,++ptr指向arr[2],ptr也指向arr[2],所以结果是8,8
热心网友
时间:2024-11-30 20:23
*(ptr++)+=123;
可以写成
* ptr++ +=123;
此时是先将*ptr指向的值加123,即arr[0]+123,
然后再将自己的地址后移一个单元,此时指向arr[1]。
printf函数里面含有逗号,由于逗号优先级最低,因此此时运算的是从右往左执行,
先执行*(++ptr),在这里由于前++所以先执行++ptr即将地址后移一个单元,
此时*ptr地址为arr[2],在将arr[2]值取出来
然后再执行*ptr,而*ptr本身指向就是arr[2],
所以执行结果为:8,8。
热心网友
时间:2024-11-30 20:23
int b=3 是干什么用的?
运行结果是:7,8
程序给出变量B和数组arr[5]后,定义整型指针ptr指向arr,此时*ptr=6
执行
*(ptr++)+=123
后,arr[0]=123+6=129,同时ptr增1后,指向arr[1]=7
执行printf时,显示arr[1]和arr[2]
热心网友
时间:2024-11-30 20:24
你的这个程序应该是错误的,运行之后会提示有两个警告,其中你的程序第四行int b=3是没用的,还有最后面要有一个返回值,所以要加上一句return 0,经过修改如下:
#include<stdio.h>
main()
{
int arr[]={6,7,8,9,10};
int *ptr=arr;
*(ptr++)+=123;
printf("%d,%d\n",*ptr,*(++ptr));
return 0;
}
过程:
*ptr=arr; //ptr指向数据arr第一个元素
*(ptr++) += 123; //根据运算符优先级,先计算ptr++,先使用,后++的,故ptr++还是指向arr第一个元素即arr[0],*(ptr++)就是arr[0],*(ptr++) += 123相当于arr[0]+=123, arr[0]=6+123=129
执行完本句,ptr指向arr[1]
printf函数执行顺序是自右向左的,所以先计算*(++ptr)再计算*ptr,可知,++ptr指向arr[2],ptr也指向arr[2]。
所以,最后输出的结果是8,8。