初探二维指针
2014-12-12 14:41
183 查看
//*(n+i)<=>n[i]
#include<stdio.h>
main(){
int n[5][5];
int i,j,c=0;
int (*p)[5],*p1;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
n[i][j]=c++;
printf("n[0]:%p,&n[0][0]:%p,n:%p,&n[0]:%p\n",n[0],&n[0][0],n[0],&n[0]);
p=n;
printf("(*p)[5]:\n");
for(i=0;i<5;i++){
for(j=0;j<5;j++)
printf("%5d",p[i][j]/*p[i][j]<=>*((p+i)+j) */);
printf("\n");
}
printf("\n *p1: \n");
for(i=0;i<5;i++){
p1=n[i];
for(j=0;j<5;j++)
printf("%5d",p1[j])/*p1[j]<=>*(p1+j)*/;
printf("\n");
}
getchar();
}
/* 指针是变量,这个变量的值是个地址,变量指向某种数据类型的地址.n,&n[0],n[0],&n[0][0]
的地址相同但类型不同.n[0]是地址,指向"int"型n[0][0]的地址;n是地址,指向"int (*)[5]"型n[0]的地址.
*/
#include<stdio.h>
main(){
int n[5][5];
int i,j,c=0;
int (*p)[5],*p1;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
n[i][j]=c++;
printf("n[0]:%p,&n[0][0]:%p,n:%p,&n[0]:%p\n",n[0],&n[0][0],n[0],&n[0]);
p=n;
printf("(*p)[5]:\n");
for(i=0;i<5;i++){
for(j=0;j<5;j++)
printf("%5d",p[i][j]/*p[i][j]<=>*((p+i)+j) */);
printf("\n");
}
printf("\n *p1: \n");
for(i=0;i<5;i++){
p1=n[i];
for(j=0;j<5;j++)
printf("%5d",p1[j])/*p1[j]<=>*(p1+j)*/;
printf("\n");
}
getchar();
}
/* 指针是变量,这个变量的值是个地址,变量指向某种数据类型的地址.n,&n[0],n[0],&n[0][0]
的地址相同但类型不同.n[0]是地址,指向"int"型n[0][0]的地址;n是地址,指向"int (*)[5]"型n[0]的地址.
*/
相关文章推荐
- C++实现离散余弦变换(参数为二维指针)
- 二维数组和二维指针的关系
- C/C++中的二维指针问题
- 二维指针,二维数组,以及指向数组的指针的相关问题
- 34-二维数组与二维指针
- 改变指针指向的地址为什么需要二维指针,从汇编角度分析
- 学习二维动态数组指针做矩阵运算的方法
- 指针和数组一致的情况及二维数组初始化
- 指针动态创建数组,二维指针处理字符数组,链表对象排序
- 4.6,数组参数与指针参数 二维数组参数与二维指针参数 一级指针参数
- 关于二维指针强制转换及传递的简单剖析
- 二维数组和二维指针
- 二维指针、指针数组、数组指针和sizeof的一些用法
- 二维指针和二维数组的关系
- OpenCV中Mat,图像二维指针和CxImage类的转换
- 二维数组与二维指针总结
- 二维数组参数传递 指针降级
- 令我困惑多时的二维指针分配问题总结
- C初始化字符串指针和二维字符数组
- 关于二维指针数组的理解