2013-02-03 126 views
0

可能重复:
Is array name a pointer in C?p和a有什么区别?

有什么用C pa之间的区别?

float a[10],*p; p=a; 
+0

'a'是十个浮点数组成的数组。 'p'是指向其第一个元素的指针。你可以在任何C教科书中找到它。 –

+0

所以a不是指向数组的第一个元素的指针? – user2038136

+0

C中数组和指针之间的关系可能会令人困惑。 [comp.lang.c FAQ](http://www.c-faq.com/)的第6部分对解释它做了出色的工作。 –

回答

2

如果我们定义“差”作为减法的结果,答案是

assert((p-a) == 0); 

...直到你一些其他指针的值赋给p(你不能做与a,因为它没有命名指针变量:它命名一个数组,衰退指针在适当的上下文;有其他上下文,例如sizeof(p)!=sizeof(a))。

+0

我投票选出当天最有趣的回答! –

+0

如果const指针存储数组第一个元素的地址,并且指针p存储指针a的地址,它们都表示数组的第一个元素? – user2038136

2
float a[10],*p; p=a; 

afloat的数组10。

p是指向float的指针。它指向a的第一个元素。在C数组中不是指针。数组和指针是两种不同的类型。例如:

sizeof a; // compute the size of an array 
sizeof p; // compute the size of a pointer 

p = &a[1]; // this is valid, p points to the second element of a 
a = &p[1]; // this is not valid, you cannot assign to an array 
相关问题