零少
发表于 2014-7-7 00:25:03
这个在谭浩强那本书讲过,是指针的位置没有初始化的造成的。
reg163
发表于 2014-7-7 12:55:37
汗,终于死得心服口服了
hfut_wangfei
发表于 2014-7-7 17:53:29
使用指针时,需要随时注意指针的位置
zhangzhilin
发表于 2014-9-8 10:28:29
太厉害了{:1_1:}
轮回的夏
发表于 2016-8-18 17:21:44
这个貌似是一个很就以前的帖子了,估计楼主早就不玩了把
我今天看到小甲鱼老师在视频里提出这个问题,让我左思右想,拿着自己正确的代码一行一行的对比,终于给我发现了错误,这个错误出现在第一个for循环之中,他让p自加了十次之后,p指向的地址已经不是a数组的地址,而是a数组后面的地址了,我也觉得这个问题是比较难发现的{:10_257:}
DreamNext、初墨
发表于 2019-7-28 15:07:05
#include"stdio.h"
int main()
{
int a;
int i;
int *p;
p=a;
for(i=0;i<10;i++)
{
scanf("%d",&a);
}
for(i=0;i<10;i++,p++)
{
printf("%d ",*p);
}
printf("\n");
return 0;
}
我用mac系统的xcode并没有出错,尴尬了。。。运行也是正常的
回忆浅离
发表于 2019-7-31 12:57:39
#include <stdio.h>
void main()
{
int *p,i,a;
p=a;
for(i=0;i<10;i++)
{
scanf("%d",p++);
}
printf("\n");
for(i=0,p=a;i<10;i++,p++)
{
printf("%d",*p);
}
}
指针越界了,改成11就行了
1085993013
发表于 2020-3-19 11:13:16
将scanf里的p++改为p+i。不要问为什么 因为我也不知道,可能是指针变量所占空间与整型变量所占空间不一样吧 我用的是vc+++6.0 别的编辑器不知道了。
永恒王座
发表于 2020-5-7 18:45:24
看不懂啊
阿敏c.
发表于 2020-5-27 16:52:38
p的值已经发生了改变,对应的地址不再是a数组的任何一个元素
可以改为 增加一条语句 p-=1;然后printf(“%d ”,*(p-i))
编程爱好者kguj
发表于 2020-6-1 22:24:48
#include <stdio.h>
void main()
{
int *p, i, a;
p = a;
for( i=0; i < 10; i++ )
{
scanf("%d", p++);
}
p=a;
printf("\n");
for( i=0; i < 10; i++, p++ )
{
printf("%d", *p);
}
}
编程爱好者kguj
发表于 2020-6-1 22:25:40
#include <stdio.h>
void main()
{
int *p, i, a;
p = a;
for( i=0; i < 10; i++ )
{
scanf("%d", p++);
}
p=a;
printf("\n");
for( i=0; i < 10; i++, p++ )
{
printf("%d", *p);
}
}
编程爱好者kguj
发表于 2020-6-1 22:26:52
没初始化{:5_108:}
编程爱好者kguj
发表于 2020-6-1 22:30:39
桌面
编程爱好者kguj
发表于 2020-6-1 22:32:16
---------------------Configuration: wrong - Win32 Debug------------------------
Compiling___
wrong .c
wrong.obj - 0 error(s), 0 uarning(s)
编程爱好者kguj
发表于 2020-6-1 22:33:54
【输入】:1 2 3 4 5 6 7 8 9 0
【输出】:1234567890Press any key to continue.
编程爱好者kguj
发表于 2020-6-2 18:04:14
{:5_108:}
烤红薯达人
发表于 2022-3-15 04:16:29
气死我了,我寻思了一晚上,我觉得我没错啊,重新赋值p=a,结果还是错,原来是第一个for后面加了分号啊啊啊啊啊!!!!!!!!!!!!!