#include <stdio.h>void print_array_test (char ca[]) { printf ("CA:%s\n", CA); printf ("&ca:%s\n", &CA); printf ("& (Ca[0]):%s\n",& (Ca[0])); printf ("& (Ca[1]):%s\n",& (ca[1])); printf ("* (ca+0):%c\n", * (ca+0)); printf ("* (ca+1):%c\n", * (ca+1)); printf ("Ca+1:%s\n", ca+1);} void Print_ptr_test (char *pa) { printf ("PA:%s\n", PA); printf ("&pa:%s\n", &PA); printf ("& (Pa[0]):%s\n",& (Pa[0])); printf ("& (Pa[1]):%s\n",& (pa[1])); printf ("Pa+1:%s\n", pa+1); printf ("pa[1]:%c\n", pa[1]); printf ("* (pa+1):%c\n", * (pa+1)); printf ("++pa:%s\n", ++PA);} int main () { char abc[]= "hello,world!"; Print_array_test (ABC); Print_ptr_test (ABC); return 0;}
Array abc[20]= "hello,world!"
&abc[i] and abc+i mean the same--take the address of Abc[i]
Pointer PA =abc;
Pa[i] and * (pa+i) are equivalent--take the value of Abc[i]
In view of the above procedures, implementation of:
[Email protected] code]#./arrayandptr
ca:hello,world!
&CA:???,??;
& (Ca[0]): hello,world!
& (Ca[1]): ello,world!
* (ca+0): H
* (ca+1): E
ca+1:ello,world!
pa:hello,world!
&PA:???,??;
& (Pa[0]): hello,world!
& (Pa[1]): ello,world!
pa+1:ello,world!
PA[1]: E
* (pa+1): E
++pa:ello,world!
[Email protected] code]#
C Expert Programming Why C language is a pointer to an array: array/pointer implementation