指向数组指针的运用

 我来答
戊秋芹辉桥
2020-01-26 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.2万
采纳率:25%
帮助的人:1046万
展开全部
//定义指针数组(而不是数组指针)
//所谓指针数组就是"它是一个数组,它的每个元素是指针"
//所谓数组指针就是"它是一个指针变量,它指向一个数组的首地址"
typedefint*PointerArray10[10];
PointerArray10Data[3];
//可以理解Data为int*Data[3][10];
//可以直接赋值:
intTestData=32;//用来测试的数据
Data[1][2]=&TestData;//因为Data是指针数组,所以给它的元素赋指针
//我们来验证上面的赋值
PointerArray10*pWork=Data;//定义PointerArray10类型的指针指向Data
//因为Data为数组,所以直接用Data数组名是表示它的首地址
pWork++;//让pWork指向Data[1]首地址;
printf("Data[1][2]=[%d]\n",(*pWork)[2]);
//用int*来验证
int**pWork2=&(Data[0][0]);//定义int类型的指针指向Data第0行第0列元素,因为
//该元素是整型指针,所以应该定义指向整型指针的指针,在C语言中数组是按行存放的
//Data有3行(0~2),每行10列(0~9),所以要得到第1行第2列的数据需要将pWork2移动
//1行*10个元素/行+第2列(即计算[1][2]元素对Data[0][0]偏移量
pWork2=pWork2+1*10+2;
printf("Data[1][2]=[%d]\n",**pWork2);
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式