This website声明数组的名称是指向其第一个元素的指针。很好。
这是我在运行以下代码时的想法:
for(;;) // forever
{
keypadPress = getKey() ;
// Process key
switch( keypadPress )
{
case '8' :
{
LCD_vPrintChar( '8' );
}
break ;
default :
{
// any other key
}
}
}
但是,当尝试运行这段代码时,我感觉上一条语句是错误的:
#include <stdio.h>
#define N 3
int main (int argc, char *argv[])
{
int b[N]={22, 44, 657};
fprintf(stdout, "[0]: %d\n", *b);
return 0;
}
如您所见,我现在创建了一个函数#include <stdio.h>
#define N 3
void foo(int (*p)[N])
{
(void) p;
}
int main (int argc, char *argv[])
{
int b[N]={22, 44, 657};
fprintf(stdout, "[0]: %d\n", *b);
foo(&b);
return 0;
}
,该函数将3个元素组成的数组作为参数,而不是Poiner或另一面的数组。如果b确实是指向数组foo
的第一个元素的指针将不起作用,或者至少会得到警告。这段代码向我证明了该网站的声明是AFAIK错误,并且数组名称是指向整个数组的指针,但是... foo(&b);
似乎可以正常工作。
有人可以详细说明吗?