c语言指针指向数组的问题。
哪位大神能给我讲一下指向数组的指针,数组中的只可以有多少中表示方法?分别是什么?例如:int*p,a[10];p=a;我要是表示a【i】可以有几种表示方法?p=a代表什么...
哪位大神能给我讲一下指向数组的指针,数组中的只可以有多少中表示方法?分别是什么?
例如:int *p,a[10];
p=a;我要是表示a【i】可以有几种表示方法?p=a代表什么意思?p++?等等这些问题,谢谢了。 展开
例如:int *p,a[10];
p=a;我要是表示a【i】可以有几种表示方法?p=a代表什么意思?p++?等等这些问题,谢谢了。 展开
4个回答
展开全部
首先你要明白一点,数组名和指针本质上是一回事,都是地址,该数组的首地址。知道这一点后就可以活学活用了。这是c语言的精髓。
比如你定义了int *p,a[10];并且让p=a;, 这个操作叫做指针p指向了数组a,其本质是给p这个变量付了一个值,就是数组a的地址,也是a[0]的地址,也是a本身里面存储的内容。
那么要引用a[i],你可以有很多种写法,比如*(a+i), *(p+i), p[i],都是等效的。
p++的含义其实不是p=p+1,至少有时不是,p++的操作其实是让p指向下一个元素,也就是原来p指向的是a[0],那么现在p指向a[1]了。由于a是int类型,站4个字节,那么p++这个操作其实是让p的内容增加了4。不要问为什么,c语言就是这么规定的。如果p指向的是一个char类型,那么p++就使p的值增加1。
比如你定义了int *p,a[10];并且让p=a;, 这个操作叫做指针p指向了数组a,其本质是给p这个变量付了一个值,就是数组a的地址,也是a[0]的地址,也是a本身里面存储的内容。
那么要引用a[i],你可以有很多种写法,比如*(a+i), *(p+i), p[i],都是等效的。
p++的含义其实不是p=p+1,至少有时不是,p++的操作其实是让p指向下一个元素,也就是原来p指向的是a[0],那么现在p指向a[1]了。由于a是int类型,站4个字节,那么p++这个操作其实是让p的内容增加了4。不要问为什么,c语言就是这么规定的。如果p指向的是一个char类型,那么p++就使p的值增加1。
展开全部
由于p是指针,所以p=a表示指向了这个数组的首元素地址,p++当然就表示指向下一个
如果要表示a[i]的话,
最常用a[i],也可以*(a+i),也可以是*(p+i)
C语言规定:表达式1[表达式2]与 *((表达式1)+(表达式2))完全等价,也可以说 a[b]与b[a]也完全等价,也就是说a[i]和i[a]也是完全等价,你可以试试
如果要表示a[i]的话,
最常用a[i],也可以*(a+i),也可以是*(p+i)
C语言规定:表达式1[表达式2]与 *((表达式1)+(表达式2))完全等价,也可以说 a[b]与b[a]也完全等价,也就是说a[i]和i[a]也是完全等价,你可以试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
*p *a p=a表示把数组的第一个地址赋值给指针p 这样指针就指向数组了 p++表示指针p地址加1 这样就指向后一个地址
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a[i] 的表示可以为:*(a+i) a[i] 我记得的就只有这两种
p=a 代表 p指针指向a数组的首地址
p++ 表示 使p指针指向它的下一个元素 比如,原本p指向a[i],则p++后p指向的是a[i+1]
p=a 代表 p指针指向a数组的首地址
p++ 表示 使p指针指向它的下一个元素 比如,原本p指向a[i],则p++后p指向的是a[i+1]
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询