
#include<stdio.h> void main() { int a[]={1,2,3,4,5,6,7,8,9}; int *p=a; printf("%d\n", p[3]); }
这段代码中为啥可以用p[3]来引用数组元素,感觉应该是*p[3],但又报错。希望大家给与解答,谢谢了...
这段代码中为啥可以用 p[3]来引用数组元素,感觉应该是*p[3],但又报错。希望大家给与解答,谢谢了
展开
3个回答
展开全部
int a[10]; 表明a是个数组,a是数组名,数组名在C中就解释为一个地址常量,代表数组的首地址。
int *p ; 表明p是个指针变量
p=a; 这时的p中存储的是数组a的首地址,此时,我们就可以把p当作a一样对待了,因此,可以用p[3]表示a[3], 为什么?呵呵,C就是这样规定的。
不知道LZ怎么就把p[3]看成一个指针了?再好好看看书。
int *p ; 表明p是个指针变量
p=a; 这时的p中存储的是数组a的首地址,此时,我们就可以把p当作a一样对待了,因此,可以用p[3]表示a[3], 为什么?呵呵,C就是这样规定的。
不知道LZ怎么就把p[3]看成一个指针了?再好好看看书。
展开全部
*p代表指针,已经指向数组了,用p[3]就是引用数组了
追问
p[3]感觉是一个指针,但现实的是p[3]数组中元素的数值,怎么看就是不相同呀。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
p[3]中p相当于a,如果想用指针,可以用*(p+3)
追问
p[3]和*(p+3) 为啥相等?求细讲。p[3]感觉是一个指针,但现实的是p[3]数组中元素的数值,怎么看就是不相同呀。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询