您的位置:首页 > 其它

指针数组和数组指针的详细解答

2016-11-13 11:54 274 查看
原文:http://blog.csdn.net/qq_26525215/article/details/50248877

/**首先弄明白什么是指针数组,什么又是数组指针。
指针数组:
类型名  *数组名[数组长度]
如:  int *p[8];
因为优先级的关系,p先与[]结合,说明p是一个数组,然后再与*结合数组p
的元素是指向整型数据的指针。相当于定义了8个整型指针变量。在此,p就是
数组元素为指针的数组,本质为数组。

数组指针:
类型名 (*指针名)[数组长度]
如:int (*p)[8];
p先与*号结合,形成一个指针,该指针指向的是有8个整型元素的数组,
p即为指向数组首元素地址的指针,其本质为指针。

**/

#include <stdio.h>
#include <stdlib.h>

int main()
{
int arr[4][4];
int i,j,k=0;
for(i=0;i<4;i++){
for(j=0;j<4;j++){
arr[i][j]=k;
k++;
}
}
int *p1[4];
int (*p2)[4];

for(k=0;k<4;k++){
p1[k]=arr[k];
}

printf("\n使用指针数组的方式访问二维数组arr\n");

for(i=0;i<4;i++){
for(j=0;j<4;j++){
printf("arr[%d][%d]=%d\t",i,j,*(p1[i]+j));
///p1[i]+[j]即第i行第j列的元素地址
}
}
printf("\n-----------------------------------\n");
p2=arr;
printf("\n使用数组指针的方式访问二维数组arr\n");

for(i=0;i<4;i++){
for(j=0;j<4;j++){
printf("arr[%d][%d]=%d\t",i,j,*(*(p2+i)+j));
}
}

return 0;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: