数组和指针

[复制链接]
查看11 | 回复1 | 2008-10-11 09:40:00 | 显示全部楼层 |阅读模式
#include
#include
//................动态分配一个数组..................
void INItARRY(int rows,int cols,int** &pA){
int i=0;
int j=0;
int k=0;
int h=0;

pA=(int**)malloc(sizeof(int*)*rows);
if(pA){

for(int i=0;i>pA[k][h];
}

}
void main(){

int **pA=NULL;
INItARRY(2,2,pA);//构造数组
int (*p)[2];
p[0]=pA;//为什么会出错??
int h=0;
while (h<2){
cout<<*p[h]<<" ";
p++;
}
}
//为什么下面的程序就对呢
#include
void main(){
// int m=4;
//为什么不行的呢
int A[4][4]={{10,15,17,21},{12,45,74,65},{58,46,15,32}};
int (*p)[4];
int j=0;
p=A;
while(j<3){
for(int i=0;i<4;i++)
cout<<(*p)<<" ";
cout<<endl;
j++;
p++;
}
}

回复

使用道具 举报

千问 | 2008-10-11 09:40:00 | 显示全部楼层
用那么多*有不必要吗?所有的编程一般情况下一个*就能搞定,那么多*麻烦不啊int A[4][4]={{10,15,17,21},{12,45,74,65},{58,46,15,32}}; int (*p)[4]; int j=0; p=A; 中p是行指针,这里p即P[0],指向行的首地址,A即是第0行的首地址*A则是第0行第0个元素的位置,用到这里是错的。int **pA=NULL; INItARRY(2,2,pA);//构造数组 int (*p)[2]; p[0]=pA;//为什么会出错?? 中 p[0]是行指针,而 pA是元素的地址,*pA才是行的地址...
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行