回 帖 发 新 帖 刷新版面

主题:[讨论]指针数组

#include <iostream>
#include <conio.h>
using namespace std;
void main()

    int (*p)[4];
    int a[3][4]={{1,2,3,5},{7,9,8,5},{7,5,8,6}};
    p=a;
    for(int i=0;i<3;i++)
            for(int j=0;j<4;j++)
        cout<<*(*(p+i)+j)<<endl;
getch();
}
本人自己实现的
int (*p)[4]; //[]的优先级高于*
             //p是一个指针变量
             //它指向一个有四个数组

int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
p =a;     //进行赋值 
for(int i=0;i<12;i++)
cout<<(*p)[i]<<endl;
也能够实现 本人明白for(int i=0;i<3;i++)
            for(int j=0;j<4;j++)
        cout<<*(*(p+i)+j)<<endl;
        但是不清楚for(int i=0;i<12;i++)
                               cout<<(*p)[i]<<endl;
该怎么解释???

回复列表 (共4个回复)

沙发

3*4=12 地址

板凳

楼上我小学是正常毕业的没走后门!!!!!!!!!!!!!!!!!

3 楼

for(int i=0;i<3;i++)
            for(int j=0;j<4;j++)
        cout<<p[i][j]<<endl;

cout<<(*)p[i];是 错误的,除非i范围是0~3,不过之歌时候输出的是各一维数组的首地址。
或者
for(int i=0;i<12;i++)
    cout<<*((int*)p+i);
也是可以的。
  

4 楼

因为数组是连续存储的,所以只要有首地址,一直往下加就行了...
貌似是的,看看资料先...

我来回复

您尚未登录,请登录后再回复。点此登录或注册