鱼C论坛

 找回密码
 立即注册
123
返回列表 发新帖
楼主: 不再等待

指针,一个不容易发现的错误

  [复制链接]
发表于 2014-7-7 00:25:03 | 显示全部楼层
这个在谭浩强那本书讲过,是指针的位置没有初始化的造成的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-7-7 12:55:37 | 显示全部楼层
汗,终于死得心服口服了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-7-7 17:53:29 | 显示全部楼层
使用指针时,需要随时注意指针的位置
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-9-8 10:28:29 | 显示全部楼层
太厉害了{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-18 17:21:44 | 显示全部楼层
这个貌似是一个很就以前的帖子了,估计楼主早就不玩了把
我今天看到小甲鱼老师在视频里提出这个问题,让我左思右想,拿着自己正确的代码一行一行的对比,终于给我发现了错误,这个错误出现在第一个for循环之中,他让p自加了十次之后,p指向的地址已经不是a数组的地址,而是a数组后面的地址了,我也觉得这个问题是比较难发现的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-7-28 15:07:05 | 显示全部楼层
#include"stdio.h"
int main()
{
    int a[10];
    int i;
    int *p;
    p=a;

    for(i=0;i<10;i++)
    {
        scanf("%d",&a[i]);
    }
    for(i=0;i<10;i++,p++)
    {
        printf("%d ",*p);
    }
    printf("\n");
    return 0;
}
我用mac系统的xcode并没有出错,尴尬了。。。运行也是正常的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-7-31 12:57:39 | 显示全部楼层
#include <stdio.h>
void main()
{
      int *p,i,a[11];
       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就行了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-19 11:13:16 | 显示全部楼层
将scanf里的p++改为p+i。不要问为什么 因为我也不知道,可能是指针变量所占空间与整型变量所占空间不一样吧 我用的是vc+++6.0 别的编辑器不知道了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-7 18:45:24 | 显示全部楼层
看不懂啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-27 16:52:38 From FishC Mobile | 显示全部楼层
p的值已经发生了改变,对应的地址不再是a数组的任何一个元素
可以改为 增加一条语句 p-=1;然后printf(“%d ”,*(p-i))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-1 22:24:48 | 显示全部楼层
#include <stdio.h>

void main()
{
    int *p, i, a[10];

    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);
    }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-1 22:25:40 | 显示全部楼层
#include <stdio.h>

void main()
{
    int *p, i, a[10];

    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);
    }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-1 22:26:52 | 显示全部楼层
没初始化
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-1 22:30:39 | 显示全部楼层

                               
登录/注册后可看大图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-1 22:32:16 | 显示全部楼层
---------------------Configuration: wrong - Win32 Debug------------------------&#8233;Compiling___&#8233;wrong .c&#8233;wrong.obj - 0 error(s), 0 uarning(s)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-1 22:33:54 | 显示全部楼层
【输入】:1 2 3 4 5 6 7 8 9 0
【输出】:1234567890Press any key to continue.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-2 18:04:14 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-15 04:16:29 | 显示全部楼层
气死我了,我寻思了一晚上,我觉得我没错啊,重新赋值p=a,结果还是错,原来是第一个for后面加了分号啊啊啊啊啊!!!!!!!!!!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-18 06:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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