c++指针题

来源:百度知道 编辑:UC知道 时间:2024/05/28 14:13:47
#include"iostream"
using namespace std;
void main()
{
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},(*p)[4],i,j;
p=a;
cin>>i>>j;
cout<<"a["<<i<<"]["<<j<<"]="<<*(*(p+i)+j)<<endl;
}
此题中(*p)[4]的作用.先谢谢了.

(*p)[m]这种形式的指针的含义是:
指向由m个元素组成的一维数组的指针变量,即“指向数组的指针”

在此例中,(*p)[4]表示p是一个指针变量,它指向包含4个整型元素一维数组,即p是行指针,p的值就是该一维数组的首地址,p不能指向一维数组中的第j个元素。

程序中,p+i是二维数组a的第i行的地址,由于p是指向一维数组的指针变量,因此p+1,就指向下一个一维数组。如:*(p+2)+3是a数组第2行第3列的元素地址,则*(*(p+2)+3)是a[2][3]的值。

因此,在cout<<"a["<<i<<"]["<<j<<"]="<<*(*(p+i)+j)<<endl;这句中,*(*(p+i)+j)就是a[i][j]的值。

特注:
“指向数组的指针”的定义形式一定为:(*p)[m];
如果写成*p[m],则就变成了“指针数组”,含义就不一样了。

我靠,这个早忘了

定义一个指针型的数组.数组里面存放指针地址.

定义一个指向数组的指针

二维数组的指针就是这样定义的!

三维数组指针 int (*p)[2][2]

(*p)[4]这个是定义的“指向数组的指针数组”,
在二维数组中,这中指针的每个元素指向一个一维数组的头指针,
如这里的p=a;就是让指针数组指向a这个二维数组。