#include "stdio.h"
char ga[] = "abcdefghijklm";
void my_array_func(char ca[10])
{
printf(" addr of array param = %#x /n",&ca);
printf(" addr (ca[0]) = %#x /n",&(ca[0]));
printf(" addr (ca[1]) = %#x /n",&(ca[1]));
printf(" ++ca = %#x /n/n",++ca);
}
void my_pointer_func(char *pa)
{
printf(" addr of ptr param = %#x /n", &pa);
printf(" addr (pa[0]) = %#x /n", &(pa[0]));
printf(" addr (pa[1]) = %#x /n", &(pa[1]));
printf(" ++pa = %#x /n",++pa);
}
main()
{
printf(" addr of blobal array = %#x /n",&ga);
printf(" addr (ga[0]) = %#x /n", &(ga[0]));
printf(" addr (ga[1]) = %#x /n/n", &(ga[1]));
my_array_func(ga);
my_pointer_func(ga);
}
上面代码在我的windows下的运行结果:
addr of blobal array = 0x424a30
addr (ga[0]) = 0x424a30
addr (ga[1]) = 0x424a31
addr of array param = 0x12ff30
addr (ca[0]) = 0x424a30
addr (ca[1]) = 0x424a31
++ca = 0x424a31
addr of ptr param = 0x12ff30
addr (pa[0]) = 0x424a30
addr (pa[1]) = 0x424a31
++pa = 0x424a31
书中结论:数组参数的地址和数组参数的第一个元素的地址竟然不一样。