int arr[]={6,7,8,9,10}; int *ptr=arr; *(ptr++)+=123; printf("%d,%d",*ptr,*(++ptr)); 求答案和原理

来源:学生作业帮助网 编辑:作业帮 时间:2024/09/21 07:12:02
int arr[]={6,7,8,9,10}; int *ptr=arr; *(ptr++)+=123; printf(
xRJ@P˜.HD(j_6mU."#>3s3_x.\05'Ue0f $@ ҠMg<9fx^U5TF /F# 0eaCU5y!Zʊ쿸ch^=p` ͒[o7XO&$ֱ_6ڑt˿>Ķ1G~]^y5ɅB/?Ș䆮v"ЕhU)?qQYƼ)3x=A$R@rF=?prZUux ,[

int arr[]={6,7,8,9,10}; int *ptr=arr; *(ptr++)+=123; printf("%d,%d",*ptr,*(++ptr)); 求答案和原理
int arr[]={6,7,8,9,10}; int *ptr=arr; *(ptr++)+=123; printf("%d,%d",*ptr,*(++ptr)); 求答案和原理

int arr[]={6,7,8,9,10}; int *ptr=arr; *(ptr++)+=123; printf("%d,%d",*ptr,*(++ptr)); 求答案和原理
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