【发布时间】:2013-09-19 07:17:13
【问题描述】:
我读到了;
虽然数组名可以用作指针(衰减为指针后),无法为其分配新值。试图让它指向其他地方是错误的:
while (*a != 0) // a is of (int *) type
a++; //wrong
另一方面,当传递给函数时,数组名始终被视为指针。函数调用
largest = largest_num(b, n) // b is an array of int
函数
int find_largest(int a[], int n)
{
....
....
}
导致将指向b 的第一个元素的指针分配给a。
以上两个陈述(粗体)在我看来是矛盾的。我很迷惑。
【问题讨论】:
-
a是指针而不是数组 @find_largest(int a[], int n) -
@GrijeshChauhan;
a[]不是find_largest()的局部变量吗? -
当你将函数参数声明为数组类型时,编译器基本上只会说“去你的,这是一个指针”。它作为一个数组的身份完全丢失了。在我看来,语言上有很大的缺陷。
-
@hacks 是的,'局部变量。
-
@hacks:无。我从不这样做。即使对于
main,有些人出于某种原因更喜欢这个签名:int main(int argc, char *argv[])——我不知道为什么。应该是int main(int argc, char** argv)
标签: c arrays function pointers arguments