c语言的奥秘 发表于 2014-9-21 13:55:42

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

#include<stdio.h>      
void main()
{
int *p,i,a;
p=&a;                                  //还可以把p=a;这完全是一样的
for(i=0;i<10;i++)
{
scanf("%d",p++);
}
printf("\n");
for(p=&a;p<(a+10);p++)   
printf("%d",*p);
}

小苏打的大世界 发表于 2014-9-21 14:47:23

for(p=&a;p<(a+10);p++)
应该是这句吧这句的P是以地址为单位的 应该是 p+sizeof(p)

c语言的奥秘 发表于 2014-9-21 16:17:15

说清楚点   看不懂

天界妖道 发表于 2014-9-27 21:14:41

for(p=&a;p<(a+10);p++)里面的p=&a这句应该是重复定义了吧!

c语言的奥秘 发表于 2014-10-12 12:48:28

天界妖道 发表于 2014-9-27 21:14
for(p=&a;p

不重复定义,如何循环啊,肯定要重复定义啊

damingdingdin 发表于 2014-10-16 23:14:17

错误在哪里啊!我觉得没错误啊!

天界妖道 发表于 2014-10-26 16:03:26

c语言的奥秘 发表于 2014-10-12 12:48
不重复定义,如何循环啊,肯定要重复定义啊

不用重新定义,可以这样,for( ; p<(a+10); p++)    for里面的条件可以不用全写的

guangren86 发表于 2014-10-27 10:06:14

for( i = 0,p=a;i < 10;i++,p++)

改下这里就好了,不知道是不是这个问题。

sam3466 发表于 2014-12-16 18:34:59

第一个循环里面的p++改成p+i;

sam3466 发表于 2014-12-16 18:35:49

因为p指向的是数组的首地址,首地址是个常数不能改变的

liht1634 发表于 2014-12-17 14:27:30

没结果了?

赵晓玉 发表于 2014-12-19 17:35:16

到底错哪了?

dps521 发表于 2015-1-11 04:23:58

玛德,这个问题也纠结我老半天了。什么情况啊。没人能解决吗

fhxy234 发表于 2015-1-18 08:29:37

#include<stdio.h>      
void main()
{
        int *p,i,a;
        p=a;                                 
        for(i=0;i<10;i++)
        {
                scanf("%d",p++);
        }
        printf("\n");
        for(p=(a+0);p<(a+10);p++)   
                printf("%d ",*p);
}

?Цtm 发表于 2015-1-18 16:10:19

本帖最后由 ?Цtm 于 2015-1-18 16:12 编辑

数组本身就是指针

淘汰之刃 发表于 2015-3-30 19:46:49

p++错了吧,循环完成一次,指正p应该指向下一个地址,而p++是在原地址+1,并不是下一个地址的正确位置

吾王Ein 发表于 2015-3-31 10:14:09

虚心学习,楼主好人

evilxin 发表于 2015-4-1 12:00:07

我看了下存储地址,发现输入的数值打印的时候,存储地址取值不是从原来的地址取值了,变成之前的存储地址后面的地址了,所有应该在第二个循环前面加个p = a,让程序从开始地址重新取值。刚学习,不知道表达的清楚不。下面是我的程序,你们可以试下没有p=a的地址。
#include <stdio.h>

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("%x ", p);
        }
        printf("\n");
        p = a;
        for( i=0; i < 10; i++, p++ )
        {
                printf("%d ", *p);
        }
        printf("\n");
        for( i=0; i < 10; i++, p++ )
        {
                printf("%x ", p);
        }
        printf("\n");       
}

haiouda 发表于 2015-4-1 12:15:26


没有发现问题哟 ??

导电性heart 发表于 2015-4-2 16:11:43

看看再说
页: [1] 2
查看完整版本: 一个指针不容易发现的错误