这是C语言的语句:
include
int main() 主函数
{
int arr[]={6,7,8,9,10}; 定义一个数组。
int *ptr=arr; 定义一个指针ptr指向数组的开头。
*(ptr++)+=123; 指针的第一个数6+123,即129,加完後指针再指向第二个数7位置。
printf("%d %d\n",*ptr,*(ptr++)); 输出7,再输出7.指针到达8的位置
return 0;
}
以上是个人理论分析,也很多年没用C了,不知对不对。你可以在电脑上跑下看看。
int *ptr=arr;//ptr指向6
*(ptr++)+=123;//ptr指向7,第一个元素变为129
printf("%d,%d",*ptr,*(++ptr)); //考虑从右往左计算,先是*(++ptr),ptr指向8,然后*ptr也是8,输出8,8
printf的参数,函数printf从左往右读取,然后将先读取放到栈底,最后读取的放在栈顶,处理时候是从栈顶开始的,所有从右边开始处理的。
include
int main()//程序入口函数
{//函数左中括号
int arr[]={6,7,8,9,10};//声明并定义一个存放5个整形数据的数组
int *ptr=arr;//声明一个整形指针指向该数组的首地址
*(ptr++)+=123;//先执行*ptr得到6, 再执行*ptr += 123,这时*ptr=129,也就是arr[0]=129, 最后执行++ptr, ptr指向数组第二个元素
printf("%d %d\n",*ptr,*(ptr++));//函数参数是从右向左入栈的, 输出arr[2],arr[1]的值,也就是输出8,7
return 0;//函数返回
}//函数右括号