int a,b,c; 等同于int a; int b; int c;
那int a[10],*p=a;这样写就对,,,int a[10];int *p=a;为什么这样就错了,,
main()
{
int a[5]={1,2,3,4,5};
int *p;
int *x;
int i;
int *p=a;\\改成p=a就不会报错
x=p+2;
for(i=0;i<3;i++)
{
printf("%d,%d\n",*x,*p++);
}
}
就提示[Error] error: redeclaration of `int*p'
现在疑惑的是 int *p等于p么??
main()
{
int a[5]={1,2,3,4,5};
int *p;
int *x;
int i;
int *p=a;\\改成p=a就不会报错
x=p+2;
for(i=0;i<3;i++)
{
printf("%d,%d\n",*x,*p++);
}
}
就提示[Error] error: redeclaration of `int*p'
现在疑惑的是 int *p等于p么?
那报错是因为你重复定义了,因为前面已经有了int *p; ,再写int *p=a;不就重复p了?错误提示也说得很明白:重复声明int*p。把前一个int *p; 删除!
唉,我的意思是 int a[10],*p=a;这样写其实就是p指向了数组a的首地址,也就是int a[10]; int *p;
p=a;的意思!可以简化成上面的写法,上面的写法是把分号简化的写法,直观上看写成这样却不对int a[10];int *p=a;
我在下面追问了。
追答你重复定义p了;
int型的指针p有两种写法: int *p; int* p;
你看第二种就会很明白,p是个指针,类型是int*。
第一种写法只是为了在定义如:int *p,a;时让你自己清楚p是指针int*型,a是int型