-
一。a的完整值表
a[0][0]=1
a[0][1]=2
a[0][2]=3
a[1][0]=4
a[1][1]=5
a[1][2]=6
a[2][0]=7
a[2][1]=8
a[2][2]=9而*(*a+1)=(*a)[1]=a[0][1]=2
二。p=&a+5*sizeof(a[0])=0x2000+(0x2004-0x2000)*5=0x2014
三。你的答案是错的,执行完strcpy(a,b);后
a[0]-A
a[1]-B
a[2]-C
a[3]-0x00
a[4]-5
a[5]-6
a[6]-0x00a[6]从来就是0x00,不可能是6的,a[5]才是6
四。char a[5]={65,66,67},因为ASCII的关系,它等价于char a[5]={'A','B','C'}
p+1指向的是&a[1],所以%s输出p+1为BC
五。你的答案又错了
a的完整值表(后面的xx是随机数了)
a[0][0]=1
a[0][1]=3
a[0][2]=5
a[1][0]=7
a[1][1]=9
a[1][2]=11a[2][0]=xx
a[2][1]=xx
a[2][2]=xx而*(a[1]+1)=a[1][1]=9
所以答案是9不是5
你可以在编译器中验证下
这些都是指针的基础(对初学者,C语言指针是难点)
如本站内容“对您有用”,欢迎随意打赏,让我们持续更新!
打赏