指针和数组的区别

比如说char*P;chara[];那么,p是个指针地址,而a也是指针地址,a是个常量指针,除此之外p和a有什么区别了?还有就是在函数中,如果传入数组参数和传入指针参数又... 比如说
char *P;
char a[];
那么,p是个指针地址,而a也是指针地址,a是个常量指针,除此之外p和a有什么区别了?
还有就是在函数中,如果传入数组参数和传入指针参数又有什么却别?
最后一个问题就是:指针所占内存等于整型数据所占内存吗?
展开
 我来答
百度网友0586124ca
2010-03-08 · TA获得超过195个赞
知道答主
回答量:92
采纳率:0%
帮助的人:0
展开全部
C++/C程序中,指针和数组在不少地方都是可以相互替换使用的,这就让人产生一种错觉,以为两者是等价的。
数组或是在静态存储区被创建(全局数组),或是在栈上被创建。数组名对应着,注意不是指向,一块内存,其地址与容量在生命期内保持不变(当然,使用了realloc()的不算),只有数组的内容可以改变。
指针可以随时指向任意类型的内存块,它的特征是“可变”,所以我们常用指针来操作动态内存。指针远比数组灵活,当然也就更危险。

区别之一:

char a[] = "hello";
a[0] = 'X';
cout << a << endl;
char *p = "world"; // 注意p指向常量字符串
p[0] = 'X'; // compiler不能发现该错误,不过在运行的时候会发生runtime error
cout << p << endl;

区别之二:

用运算符sizeof可以计算出数组的容量(字节数)。比如对应上面的代码,sizeof(a)的值是12(包括最后面的'\0')。指针p指向a,但是sizeof(p)的值却是4。这是因为sizeof(p)得到的是一个指针变量的字节数,相当于sizeof(char*),而不是p所指的内存容量siziof(char[6])。C++/C不能知道指针所指的内存容量。
值得注意的是,当数组作为函数的参数进行传递时,数组就自动退化为同类型的指针。那么不论数组a的容量是多少,sizeof(a)始终等于sizeof(char *)。
尤铭衣理
2019-05-29 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:29%
帮助的人:804万
展开全部
p+i是指针向后移了一个
比如*p=a[0],那么*(p+i)=a[i]
a+2
a[10]中的a表示数组a[10]首地址
那么a+2就是a[0+2]=a[2]
p++和p=p+1等同
这个意思是改变指针指向,使之指向下一个.
p-a是表示相差几个元素
a是数组首地址但记住他不是指针
所以对他的运算操作都是无意义的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
焦博简03r
2010-03-08 · TA获得超过8785个赞
知道小有建树答主
回答量:1186
采纳率:0%
帮助的人:691万
展开全部
没其他区别了应该
传入后没什么区别,一个是传常量指针,另一个传变量指针,但接受的都是一个变量,根本反映不出来有区别
是整形的,tubo C 中2个字节存储
vc 中4个字节存储
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dxlhq_bdzd
2010-03-08 · TA获得超过1722个赞
知道小有建树答主
回答量:571
采纳率:0%
帮助的人:0
展开全部
c语言中在绝大部分情况下两者用法一样,都表示一个地址。区别是指针是个变量,可以赋值,而数组是个常量,不能赋值。
如:
char a[12];
char b[12];
char *p;
p = a; //合法
p = b; //合法
a = b; //不合法
b = a; //不合法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
raidencheng
2010-03-08
知道答主
回答量:14
采纳率:0%
帮助的人:0
展开全部
1. 可以把数组理解成一个常量指针,事实上里面存放的确是就是个地址,但这个地址后面会顺序存放数组元素,这个要明确。
2. 在函数中,传入的数组会退化为指针。
3. sizeof一个指针和sizeof一个int的值,在同一个编译环境下是相同的。

关于更具体的,c++有很多好书详细说了这些,c++ primer还有高质量c++。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式