<C专家编程> 中的一个关于指针和数组的例子, Page216
运行之后的结果是:
需要仔细琢磨一下.
- char ga[] = "abcdefghijklm";
- void my_array_func(char ca[10])
- {
- printf("address 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("address 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/n", ++pa);
- }
- int main()
- {
- printf("address of global 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);
- return 0;
- }
- address of global array = 0x804967c
- addr(ga[0]) = 0x804967c
- addr(ga[1]) = 0x804967d
- address of array param = 0xbfffc4d0
- addr(ca[0]) = 0x804967c
- addr(ca[1]) = 0x804967d
- ++ca = 0x804967d
- address of ptr param = 0xbfffc4d0
- addr(pa[0]) = 0x804967c
- addr(pa[1]) = 0x804967d
- ++pa = 0x804967d