鱼C论坛

 找回密码
 立即注册
查看: 2670|回复: 10

B站课后题 指针

[复制链接]
发表于 2019-1-3 16:24:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
void main()
int *p,i,a[10]
p=a
for(i=0;i<10,i++)
scanf("%d",p++)
for(i=0;i<10;i++;p++)
printf("%d",*p)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-1-3 16:26:29 | 显示全部楼层
这错在哪
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-3 16:58:15 | 显示全部楼层
首先,少分号。
其次p++将移动整个数组的长度,因为你指向的是整个数组
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-1-4 17:17:54 | 显示全部楼层
BngThea 发表于 2019-1-3 16:58
首先,少分号。
其次p++将移动整个数组的长度,因为你指向的是整个数组

for(p=&a;p<(a+10);p++)
printf("%d\n",*p);
这样为什么就可以
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-4 17:24:28 | 显示全部楼层

这相当于p为数组a的第一个元素的地址,当然是可以的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-1-4 17:28:55 | 显示全部楼层
BngThea 发表于 2019-1-4 17:24
这相当于p为数组a的第一个元素的地址,当然是可以的

第一个也是p为数组a的第一个元素地址啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-4 19:03:50 | 显示全部楼层

这是一条语句,好不好。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-4 19:45:33 | 显示全部楼层
for(i=0;i<10;i++;p++)
printf("%d",*p)

for里面多了个分号呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-14 23:18:16 | 显示全部楼层
本帖最后由 Liyr 于 2019-1-14 23:23 编辑

p = a; //这里a是第一个元素的地址;如果要写成 p = &a; p必须是 int (*p)[5];

scanf("%d", p++);  //p是一个地址,你不能对地址赋值,可以写成 p+i 或者 &p[i]

for(i = 0; i < 10; i++; p++)   //p++ 是多余的

printf("%d ", *p);    //写成 printf("%d ", *(p+i));  或者printf("%d ", p[i]):

还有:
      代码规范;
      主函数要返回一个int;
      属于for循环的语句最好用{}括起来;

有错请指正。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-26 17:07:24 | 显示全部楼层
1.定义变量的语句、scanf、printf后面少分号。
2.for(i = 0; i < 10; i++; p++) ,语法错误。修改为 for(i = 0; i < 10; i++, p++)
3.看程序的意思是想输入数组各元素的值,然后输出。但是scanf输入元素值之后,p指针指向了数组后面的地址,未重置p的值,*p是数组所占内存后面地址的数据。
  在scanf之后,重新p=a; 即可。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-26 19:16:01 | 显示全部楼层
void main()
{
        int *p, i, a[10];
        p = a;
        for (i = 0; i < 10; i++)
                scanf("%d", p++);
        p = a;//指针移动回来
        for (i = 0; i < 10; i++,p++)
                printf("%d\n", *p);
}
下回那编译器试一下再发啊连{}都没有  ;也不全
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-3 17:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表