#include main() {int a[10]={1,2,3,4,5,6},*p; p=a; *(p+3)+=2; printf("%d,%d",*p,*(p+3));求详解

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/26 06:00:00
#include main() {int a[10]={1,2,3,4,5,6},*p; p=a; *(p+3)+=2; printf(
xN@_L 冖1\TфDʘq Q\HbLb_fNI9'Le=V7v3k¦Aa/M+{8XK BzR5)z8 +1oQz=g?`$ӽW"e=s).|P :⛞3|odT@ne9ҭjizZ*2vuFLԨC5NuaUcQh>yjhVpDSECqV1zu͈6c_y(½ꋏrpt{^2iO'Wf9i>F‰MAMjߚӳV5x^(ȍ1q^VȔf _{20D9Z35

#include main() {int a[10]={1,2,3,4,5,6},*p; p=a; *(p+3)+=2; printf("%d,%d",*p,*(p+3));求详解
#include main() {int a[10]={1,2,3,4,5,6},*p; p=a; *(p+3)+=2; printf("%d,%d",*p,*(p+3));
求详解

#include main() {int a[10]={1,2,3,4,5,6},*p; p=a; *(p+3)+=2; printf("%d,%d",*p,*(p+3));求详解
输出1,6.因为本身数组名也是一种指针,其指针类型与数组类型相同.数组名指针指向的内容就是数组的第一个元素,也就是下标为0的元素.那么让一个指针等于数组名,其实就是让这个指针指向数组第一个元素也就是下标为0的元素.所以*p=a[0],*(p+3)=a[3],而且是引用,所以使用*(p+3)修改的是数组的内容,所以*(p+3)+=2;之后,就是使得数组下标为3的元素的值+2.,所以a[3]=6.所以输出*p=a[0]=1,*(p+3)=a[3]=6.不明白可追问.