C语言 有关*p=a,**q=&p;的问题

[复制链接]
查看11 | 回复2 | 2012-9-16 20:48:31 | 显示全部楼层 |阅读模式
int a[5]={1,2,3,4,5}; int *p=a,//此时p指向a[0],也就是1
**q=&p;//此时q指向p printf("%d\n",*(p++));//这句相当于下面的两句的合并:/*
printf("%d\n",*p);//按照p寻址并输出,此时p指向a[0],于是输出1
p=p+1;//p指针向前移动,此时p指向a[1],也就是2*/ printf("%d\n",**q);//按照q二次寻址输出。q指向p,p指向a[1],于是输出a[1],也就是2...
回复

使用道具 举报

千问 | 2012-9-16 20:48:31 | 显示全部楼层
p是一个一维指针,它指向数组a的第一个元素a[0],*(p++)会先取p当前指向的地址并做解引用得到a[0]元素的值,然后再将p指针移位指向相邻的下一个元素(即a[1]元素)q是一个二维指针(可以理解为指针的指针),它指向了指针p,所以*q得到的是指针p现在指向的地址(即a[1])**q相当于*p,由于上一条语句中,p移动到了a[1]元素,所以这...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行