深入理解char ,char * ,char ** ,char a[ ] ,char *a[] 的区别
- char a; 字符变量
定义了一个字符变量a,只能放一个字符,长度是1。 a = “p”; - char a[10]; 字符数组
定义了一个字符数组,长度为10,可以存放长度为10的字符串 a[10] = {"hello "};
a =&a[0]; 数组名就是数组首个元素的地址,数组又是连续的,所以打印字符串,只需printf(数组名) - char * a 字符指针
a = “hello world” 因为在C中,字符串常量就是个指针,所以实际上是把字符串常量的首地址给了指针变量a 这和字符数组有类似之处。 - *char s 4个字节,32位,放指针变量 char a[10] sizeof(a) 是10
- char * a[] *
由于[ ] 的优先级高于* 所以a先和 [ ]结合,他还是一个数组,数组中的元素才是char * ,保存一个地址。
char a[ ] = {“hellow”,“world”,“my”,“friend”}; 44 =16个字节char **s;
char **为二级指针, s保存一级指针 char *的地址,关于二级指针就在这里不详细讨论了 ,简单的说一下二级指针的易错点。
举例:
char *a [ ] = {"China","French","America","G