一个指针不容易发现的错误
#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);
}
for(p=&a;p<(a+10);p++)
应该是这句吧这句的P是以地址为单位的 应该是 p+sizeof(p) 说清楚点 看不懂 for(p=&a;p<(a+10);p++)里面的p=&a这句应该是重复定义了吧! 天界妖道 发表于 2014-9-27 21:14
for(p=&a;p
不重复定义,如何循环啊,肯定要重复定义啊 错误在哪里啊!我觉得没错误啊! c语言的奥秘 发表于 2014-10-12 12:48
不重复定义,如何循环啊,肯定要重复定义啊
不用重新定义,可以这样,for( ; p<(a+10); p++) for里面的条件可以不用全写的 for( i = 0,p=a;i < 10;i++,p++)
改下这里就好了,不知道是不是这个问题。 第一个循环里面的p++改成p+i; 因为p指向的是数组的首地址,首地址是个常数不能改变的 没结果了? 到底错哪了?
玛德,这个问题也纠结我老半天了。什么情况啊。没人能解决吗 #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:12 编辑
数组本身就是指针 p++错了吧,循环完成一次,指正p应该指向下一个地址,而p++是在原地址+1,并不是下一个地址的正确位置 虚心学习,楼主好人 我看了下存储地址,发现输入的数值打印的时候,存储地址取值不是从原来的地址取值了,变成之前的存储地址后面的地址了,所有应该在第二个循环前面加个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");
}
没有发现问题哟 ?? 看看再说
页:
[1]
2