3个回答
展开全部
p[i]的意思就是从地址p开始向后偏移i个单位后的地址空间内的值
*(p+i) 也是上面的意思
[]实际上就是个地址偏移操作符 ,c语言编译器就是把p[i]转换成*(p+i)处理的,p[i]和*(p+i)无条件等价
比如有数组int p[4]={1,2,3,4};
p就是这个数组的首地址
p[2]就是从p开始偏移2个int单位后的地址内的值 就是3
*(p+2) 这个更好理解,p+2就是在p的基础上+2个int单位的地址,那么*(p+2)就是这个地址内的值:3
*(p+i) 也是上面的意思
[]实际上就是个地址偏移操作符 ,c语言编译器就是把p[i]转换成*(p+i)处理的,p[i]和*(p+i)无条件等价
比如有数组int p[4]={1,2,3,4};
p就是这个数组的首地址
p[2]就是从p开始偏移2个int单位后的地址内的值 就是3
*(p+2) 这个更好理解,p+2就是在p的基础上+2个int单位的地址,那么*(p+2)就是这个地址内的值:3
追问
# include
int main(void)
{
int a[5] = {1,2,3,4,5};
int i;
for (i=0; i<5; ++i)
printf("%d\n", a[i]); //a[i] == *(a+i)
return 0;
}
这个例子能不能请高手帮我解析一下?
追答
循环中i为0,1,2,3,4,那么输出就是a[0]换行,a[1]换行,a[2]换行,a[3]换行,a[4] 换行
就是
1
2
3
4
5
展开全部
数值名P代表的是数值的首址,而指针的值不是简单的加法,如在整形中,p+2实际上是首址+2*(sizeof(int)),也就是,指针相加的2实际上2个跨度。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int p[10];
p你可以认为是一个const指针变量,p的值是其低维度变量的地址,事实上编译器就是按此规则翻译
p你可以认为是一个const指针变量,p的值是其低维度变量的地址,事实上编译器就是按此规则翻译
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询