深入解析int(*p)[]和int(**p)[]
更新时间:2013年07月11日 10:50:47 作者:
以下是对int(*p)[]和int(**p)[]的使用进行了详细的分析介绍,需要的朋友可以参考下
1. int(*p)[10]:
根据运算符的结合律,()的优先级最高,所以p是一个指针,指向的一个维度为10的一维数组。
p一个指向数组的某一行
int a[1][4]={1,2,3,4};
int (*p)[4] = a;//p point to the row of array a
for(int i=0;i<4;i++)
{
cout<<*((*p)+i)<<" ";
}
2. int(**q)[10]
这个的意义:q是一个指针,指向的元素就是1.中的p.
下面给一个例子:
#include<iostream>
#include<stdio.h>
using namespace std;
int main()
{
int a[2][2]={1,2,3,4};
int (*p)[2] = a;//p point to the row of array a
for(int i = 0;i<2;i++)//output matrix using p
{
for(int j = 0;j<2;j++)
{
cout<<*(*(p+i)+j)<<" ";
}
cout<<endl;
}
int (**q)[2] = &p;//q point to p
for(int i = 0;i<2;i++)//output matrix using q
{
for(int j = 0;j<2;j++)
{
cout<<*(*(*q+i)+j)<<" ";
}
cout<<endl;
}
getchar();
return 0;
}
根据运算符的结合律,()的优先级最高,所以p是一个指针,指向的一个维度为10的一维数组。
p一个指向数组的某一行
复制代码 代码如下:
int a[1][4]={1,2,3,4};
int (*p)[4] = a;//p point to the row of array a
for(int i=0;i<4;i++)
{
cout<<*((*p)+i)<<" ";
}
2. int(**q)[10]
这个的意义:q是一个指针,指向的元素就是1.中的p.
下面给一个例子:
复制代码 代码如下:
#include<iostream>
#include<stdio.h>
using namespace std;
int main()
{
int a[2][2]={1,2,3,4};
int (*p)[2] = a;//p point to the row of array a
for(int i = 0;i<2;i++)//output matrix using p
{
for(int j = 0;j<2;j++)
{
cout<<*(*(p+i)+j)<<" ";
}
cout<<endl;
}
int (**q)[2] = &p;//q point to p
for(int i = 0;i<2;i++)//output matrix using q
{
for(int j = 0;j<2;j++)
{
cout<<*(*(*q+i)+j)<<" ";
}
cout<<endl;
}
getchar();
return 0;
}
相关文章
C/C++ Qt 选择夹TabWidget组件实现导航栏切换
Tab切换在很多地方都可以使用的到,本文就使用TabWidget组件来实现一下,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2021-11-11
最新评论