指向一维数组的指针与用指针访问数组有什么区别? 15

两者的作用不是等价的吗?都能访问二维数组中的元素及它们的地址。那C++中为什么要设置这两个不一样的工具呢?... 两者的作用不是等价的吗?都能访问二维数组中的元素及它们的地址。那C++中为什么要设置这两个不一样的工具呢? 展开
 我来答
百度网友b0e28cae4
推荐于2017-05-16 · TA获得超过4016个赞
知道大有可为答主
回答量:1275
采纳率:85%
帮助的人:619万
展开全部
指向一维数组的指针:int a[10] , a 是一维数组的指针
指向数组的指针变量:int a[10] ; int *p = a; p 指向数组的指针变量。

相同:都能访问数组的元素,如 a[i] 和 p[i], *(p+i) 等价。
区别1:
a 是一个指针常量,不能改变它的值。
如 int a[10];
int b[10];
a=b; // 试图改变一个常量的值,非法操作!

p 是一个指针变量量,能改变它的值。
如 int a[10];
int *p = a;
int b[10];
*p = b; // 试图改变一个变量的值,合法操作!

区别2:
int a[10];
int *p = a;
printf("%d %d",sizeof(a),sizeof(p)); // 输出 40 , 4

用 sizeof 计算指针的大小时,
如果是指针常量,结果是这个指针常量指向的区域的大小。如 a.由 10 int 元素,
占用 4 * 10=40 个字节。

如果是指针变量量,结果是这个指针变量本身的大小。指针变量一般占用 4 个字节。
tyghy
2011-08-02 · TA获得超过373个赞
知道答主
回答量:56
采纳率:0%
帮助的人:70.7万
展开全部
1、指向一维数组的指针指定义了指针变量,并给其赋值为一维数组的首地址或数组元素的地址。比如:int a[10],*p; p=a;或p=&a[i];当定义了指向一维数组的指针后,就可以使用指针访问数组元素了。也就是说对数组元素的访问方式又多了一种方法。比如前面我们定义了指向一维数组a的指针变量p,我们就可以用*p得到其所指向的数组元素。
2、指向一维数组的指针不能访问二维数组中的元素及它们的地址。二维数组中有另外的指针形式定义和访问数组元素。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bobo5582191
2011-07-19 · 超过48用户采纳过TA的回答
知道小有建树答主
回答量:126
采纳率:0%
帮助的人:108万
展开全部
指向一维数组的指针只是个指针的一种应用,意思是说定义了一个指针,它指向一维数组。
用指针访问数组是说指针的用途,意思是可以用指针来访问数组,比如int *p=(int *)a[0];*(p+1)=a[1].
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Hello_W_ord
2011-07-19 · 超过10用户采纳过TA的回答
知道答主
回答量:33
采纳率:0%
帮助的人:0
展开全部
准确的说是用指向一位数组的指针进行访问数组的操作。
就想这样:
int a[10];
int *b=a;
for(int i=0;i<10;i++)
{
printf("%d",*(b+i));
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
风雳根0P
2011-07-19
知道答主
回答量:16
采纳率:0%
帮助的人:0
展开全部
这两个根本就不是一类东西。前面的是指针,后面的是用指针操作
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式