c语言中指针*p中的p和数组a[10]中的a有什么区别…在用法上和意义上…求答案

 我来答
虹影因B
2013-11-04 · 超过62用户采纳过TA的回答
知道答主
回答量:113
采纳率:0%
帮助的人:150万
展开全部
二重指针,首先你要有数组的概念,数组就是一片连续的存储地址,一维的情形用一个指针来实现对数组中数据的引用。如 int a[10];这句话实际是在内存中申请了10个连续的地址块,每块地址可以用来存储一个int型数据。而a就是用来引用数据的指针,比如a[2],实际就引用了第三块地址(从0开始)。 而二维数组和一维的原理是一样的也是连续的地址块,只是引用的方式不一样,术语上讲就是二重指针;int a[3][3],开辟了9个int的连续地址,a不能直接引用其中的某一块a,你可以把它看做是矩阵,a[0]是指向第一行,第一行可以看做数组,那么a[0]就是一维数组的指针,a[0][1]就表示第一行那个一维数组中的第二个元素;类似a[1][2]就表示第二行那个一维数组中的第三个元素。 这块内容要画出内存图就能更好的理解了,你自己试着画一画。其实很简单不管是几维的数组他们的物理存储都是连续的一块内存,只是解释方式不同而已。重要的不是他们的实际的物理存储,而是他们的逻辑结构(在程序中你要怎么去解释)
linnjing
2013-11-05 · TA获得超过2631个赞
知道大有可为答主
回答量:1230
采纳率:91%
帮助的人:495万
展开全部
p 是变量,是可以变化的,比如可以 p++, p=a, p= NULL;
a 是常量,不能变化,你不可以 a++, a = NULL; 这些都不允许。
用的时候,两者差别不大,比如 p[0] = *a; 是可以的,没问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式