可能重复:
数组名称是 C 中的指针吗?
p
C 中的和有什么区别a
?
float a[10],*p; p=a;
如果我们将“差异”定义为减法的结果,则答案为零:
assert((p-a) == 0);
...直到您分配一些其他指针值p
(您不能这样做a
,因为它没有命名指针变量:它命名了一个数组,该数组在适当的上下文中衰减为指针;还有其他上下文,例如sizeof(p)!=sizeof(a)
)。
float a[10],*p; p=a;
a
是 10 的数组float
。
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