定义为数组、声明为指针、
test1.c
extern void test (void);
int a[5] = {0xff};
int main (void)
{
printf("%p\n", a);
test();
return 0;
}
test2.c
extern int * a;
void test (void)
{
printf("%p\n", a);
}
输出结果为:
010F7000
000000FF
当定义为数组、在另一个文件中声明为指针时,这个指针变量中的值不是数组首元素的首地址,而是数组中前4个字节的值、
定义为指针、声明为数组、
test.c
extern void test (void);
char * a = "aaaaaaaaaaa";
int main (void)
{
printf("%p\n", a);
test();
return 0;
}
test2.c
extern char a[];
void test (void)
{
int i = 0;
for (i = 0; i < 4; i++)
printf("%X\n", a[i]);
}
输出结果为:
00DF57A0
FFFFFFA0
57
FFFFFFDF
0
由结果可知、test输出的是指针p中存储的地址,而不是存储的字符、