刚学指针遇到的问题

huanghu518 2005-01-06 08:25:50
#include<stdio.h>
void main()
{
int *a;
int i[5]={10,20,30,40,50};


a=i;

for(i=0;i<5;i++)
{
printf("%d\n",*(a+1));
}

}

帮我看看怎么回事
...全文
130 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zxx110 2005-01-06
  • 打赏
  • 举报
回复
楼主你的i[5],中i被定义成数组首地址
而在循环子定义中,初始化i = 0

i充当两个功能: 地址 和 循环子
建议你另外定义数组或者循环变量
以免混淆

*(a+1) => *(a+i) //*(a+i)和a[i]一样的

szywelcome 2005-01-06
  • 打赏
  • 举报
回复
楼主你的i[5],中i被定义成数组首地址
而在循环子定义中,初始化i = 0

i充当两个功能: 地址 和 循环子
建议你另外定义数组或者循环变量
以免混淆

同意这个
你都把变量搞糊涂了啊
lu1172101275 2005-01-06
  • 打赏
  • 举报
回复
a=i ,之后,a,i 同指向一块区域的,也就是指针初始化了,可以操作了。a[i]是允许的
playmud 2005-01-06
  • 打赏
  • 举报
回复
printf("%d\n",*(a+i));
idler 2005-01-06
  • 打赏
  • 举报
回复
*(a+1) => *(a+i)
楼主笔误吧哈哈

*(a+i)和a[i]一样的,学指针的时候拿这个练练手体会一下也是不错的。
beyondtkl 2005-01-06
  • 打赏
  • 举报
回复
a++
goodluckyxl 2005-01-06
  • 打赏
  • 举报
回复
楼主你的i[5],中i被定义成数组首地址
而在循环子定义中,初始化i = 0

i充当两个功能: 地址 和 循环子
建议你另外定义数组或者循环变量
以免混淆

printf("%d\n",*(a+1));// *(a+i);手误了
kobefly 2005-01-06
  • 打赏
  • 举报
回复
printf("%d\n",*(a+1));
==》
printf("%d\n",*(a+i));
languagec 2005-01-06
  • 打赏
  • 举报
回复
#include<stdio.h>
void main()
{
int *a;
int i[5]={10,20,30,40,50};


a=i;

for(i=0;i<5;i++)
{
printf("%d\n",*(a+i));
}

}

64,662

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧