int arr[]={6,7,8,9,10}; int *ptr=arr; *(ptr++)+=123; printf(

问题描述:

int arr[]={6,7,8,9,10}; int *ptr=arr; *(ptr++)+=123; printf("%d,%d",*ptr,*(++ptr)); 求答案和原理
1个回答 分类:综合 2014-12-12

问题解答:

我来补答
int arr[]={6,7,8,9,10}; //定义数组包括5个元素
int *ptr=arr; //定义指针变量,指向数组的首地址
*(ptr++)+=123; //等价于*(ptr++)=*(ptr++)+123首选计算括号里的,是后置加,加*是取括号指针所针变量的内容即6,用完之后,ptr指向arr[1],但现在是6+123即129赋给*(ptr++),这时ptr指向的是arr[1],所以arr[1]=129,记住赋完之后ptr又加1,指向的是arr[2]
printf("%d,%d",*ptr,*(++ptr));//而这时输出ptr就是8,而后边的是先地址加1再取内容,因些是9
 
 
展开全文阅读
剩余:2000
上一页:
下一页:判断题。