数组指针和指针数组的区别-创新互联

数组指针:a pointer to an array ,指向数组的指针
指针数组:array of pointer ,用于存储指针的数组,即数组元素都是指针
int (p)[6] 数组指针 :表示指向数组a的指针 元素表示:(a)[i] (指向一维数组的指针,也成行指针)
int p[6] 指针数组 :表示数组a中的元素都是int型,即int型指针 元素表示:(a[i]) 或者a[i] ([]优先级高于
代码:
#include<iostream>
using namespace std;
int main()
{
int a[4] = { 1,2,3,4 };
int
b[4]; //指针数组
int(c)[4]; //数组指针
c = &a; //让c指向a的首地址
for (int i = 0; i<4; i++)
{
b[i] = &a[i]; //b数组的元素为指针,即元素内容为地址
}
cout <<
b[1] << endl; //b[1]=&a[1],即b[1]中为地址(该地址中存入的是数据2) , b[1]即取&a[1]中的元素内容,即2
cout << (
c)[2] << endl;//可将(c)看成数组名,相当于a,(c)[2]=a[2],即为3
return 0;
}
执行结果:
2
3

创新互联建站是专业的成华网站建设公司,成华接单;提供成都网站制作、成都网站设计,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行成华网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

注意:定义了数组指针(c)[i],就必须给这个指针一个地址c=&a,不能不给指向(地址)就直接赋值((c)[i]=a[i]),否则会出错
技巧:可以将数组指针的(*c)看成一个数组名使用

数组指针
int (p)[6] ()优先级高,说明p是一个指针,指向一个int型的一维数组,这个数组的长度是n,也就是p的步长为n,执行p+1(p要跨过n个整型数据的长度)
int a[3][4];
int (
p)[4]; //定义一个数组指针,指向含4个元素的以为数组
p=a; //将二维数组a的首地址赋给p,即a[0]或&a[0][0]
p++; //该语句执行后,即p=p+1,p跨过行a[0]指向了行a[1]

#include<iostream>
using namespace std;
int main()
{
int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
int(p)[4];
p = a;
cout << (
p)[0] << endl;
p++;
cout << (p)[0] << endl;
cout <<
((p)+1)<< endl; //((p)+1)相当于(p)[1] ,*p此时为一个地址

}
执行结果:
1
5
6

指针数组 int p[n]
[]优先级高,先与p结合成为一个数组,再由int
说明这是一个整型指针数组,它由n个指针lexington的元素组成(这里执行p+1是错误的,这样赋值也是错误的:p=a,p是个不可预知的表示,只存在p[0],p[1]….p[n-1],它们分别是指针变量可以用来存放变量地址),可以这样p=a;这里p表示指针数组第一个元素的值,a的首地址的值
int *p[3]; //表示一个一维数组内存放着三个指针变量,分别是p[0],p[1],p[2]
int a[3][4];
for(i=0;i<3;i++)
p[i]=a[i];

ps:数组指针只是一个指针变量,它占有内存中一个指针的存储空间,指针数组是多个指针变量,以数组形式存在内存中,占有多个指针的存储空间
指针数组要表示数组中第i行第j列的元素:
(p[i]+j)((p+i)+j) ((p+i))[j] p[i][j]

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。

本文题目:数组指针和指针数组的区别-创新互联
分享URL:https://www.cdcxhl.com/article34/hpjse.html

成都网站建设公司_创新互联,为您提供电子商务品牌网站制作微信公众号微信小程序企业建站商城网站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

搜索引擎优化