简单的指针,但我没搞懂。main(){int a[10]{1,2,3,4,5,6,7,8,9,0},*ppaprintf(%x\n,p)printf(%x\n,
简单的指针,但我没搞懂。
main()
{
int a[10]={1,2,3,4,5,6,7,8,9,0},*p;
p=a;
printf("%x\n",p);
printf("%x\n",p+9);
如果第一个printf输出是194,那么第二个printf输出是多少。
第一个输出怎么会是194呢,没看懂,谁看懂了,说一说。
[最优解释]输出的是p的地址,p+9的话,则是p的地址加9,p是int型的,即194+9*sizeof(int) = 194 + 36 = 230
[其他解释]printf("%x\n",p);你打印出来的是p本身的地址,并不是p所指向的值。应该是printf("%x\n",*p)
[其他解释]数组名代表数组第一个元素的地址,即a是a[1]的地址,p=a,指针p指向a[1]的地址,a[1]被分配的地址是194,p就是194了
[其他解释]输出的是p的地址,p+9的话,则是p的地址加9,p是int型的,即196+9*sizeof(int) = 230
[其他解释]http://pan.baidu.com/share/link?shareid=144862&uk=2718858870
好好看看这个,把指针类型,指针所指类型,指针指向哪里搞明白了,你的问题也就解决了
[其他解释]应该是a[0]的地址吧?
[其他解释]对,写错了!