有关C语言指针问题,麻烦大家帮我看下

来源:百度知道 编辑:UC知道 时间:2024/05/13 05:56:21
以下是一段要求用指针输出1-10数组的程序:
main()
{int array[10],i,*p1;
for(i=0;i<10;i++)
{scanf("%d",array[i]);
}
p1=array[0];
for(i=0;i<10;i++)
{printf("%d ",*p1+i);
}
}

但我把其中的p1=array[0]改写成p1=array运行结果就错了,这是为什么?
array[0]和array不是等同的么?

你用的什么编译器?!类型不匹配也能过?
你代码的错误很多。。。这样才是对的
int array[10],i,*p1;
for(i=0;i<10;i++)
{scanf("%d",&array[i]);
}
p1=array;
for(i=0;i<10;i++)
{printf("%d ",*(p1+i));
}

p1=array[0];
------------------
这个不对吧,你本来就定义array[],p1是指针变量。
你如何会用p1=array[0]来将一个int赋给一个int*???

如果int *p1,array[10];
p1=array;是可以的。

因为你在后面涉及到指针地址的加法操作,所以你必须让编译器知道你加的是一个数组元素(array[i])的地址长度,还是整个数组array的地址长度,而p1=array只是把array的首地址赋予p1,他默认的也是把array整个数组的地址大小长度赋给p1,所以后面的p1+i就是相对于不对的
而且printf("%d ",*(p1+i))要加括号的