B站课后题 指针
void main()int *p,i,a
p=a
for(i=0;i<10,i++)
scanf("%d",p++)
for(i=0;i<10;i++;p++)
printf("%d",*p) 这错在哪 首先,少分号。
其次p++将移动整个数组的长度,因为你指向的是整个数组 BngThea 发表于 2019-1-3 16:58
首先,少分号。
其次p++将移动整个数组的长度,因为你指向的是整个数组
for(p=&a;p<(a+10);p++)
printf("%d\n",*p);
这样为什么就可以 小傻丶 发表于 2019-1-4 17:17
for(p=&a;p
这相当于p为数组a的第一个元素的地址,当然是可以的 BngThea 发表于 2019-1-4 17:24
这相当于p为数组a的第一个元素的地址,当然是可以的
第一个也是p为数组a的第一个元素地址啊 小傻丶 发表于 2019-1-4 17:17
for(p=&a;p
这是一条语句,好不好。。。 for(i=0;i<10;i++;p++)
printf("%d",*p)
for里面多了个分号呀 本帖最后由 Liyr 于 2019-1-14 23:23 编辑
p = a; //这里a是第一个元素的地址;如果要写成 p = &a; p必须是 int (*p);
scanf("%d", p++);//p是一个地址,你不能对地址赋值,可以写成 p+i 或者 &p
for(i = 0; i < 10; i++; p++) //p++ 是多余的
printf("%d ", *p); //写成 printf("%d ", *(p+i));或者printf("%d ", p):
还有:
代码规范;
主函数要返回一个int;
属于for循环的语句最好用{}括起来;
有错请指正。 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; 即可。 void main()
{
int *p, i, a;
p = a;
for (i = 0; i < 10; i++)
scanf("%d", p++);
p = a;//指针移动回来
for (i = 0; i < 10; i++,p++)
printf("%d\n", *p);
}
下回那编译器试一下再发啊连{}都没有;也不全
页:
[1]