2013-02-03 160 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 
相關問題