C语言中由于指针的灵活性,指针和数组经常可以混用,容易产生迷惑,下面浅析一下关于指针的字符数组和字符串。
关于二级指针,其实,二级指针保存的是一级指针的地址,它的类型是指针变量,而一级指针保存的是指向数据所在的内存单元的地址,虽然都是地址,但是类型是不一样的。。。
char *a[ ] = {"China","French","America","German"};
同过这句可以看到, 数组中的元素是字符串,那么sizeof(a) 是多少呢,有人会想到是五个单词的占内存中的全部字节数 6+7+8+7 = 28;
但是其实sizeof(a) = 16; 字符串常量的本质是地址,a 数组中的元素为char * 指针,指针变量占四个字节,那么四个元素就是16个字节了