1.1 二重指针与普通一重指针的区别
(1)本质上来说,二重指针和一重指针的本质都是指针变量,指针变量的本质就是变量
#include <stdio.h>
int main(void)
{
char *(*p1); //二重指针
char *p2; //一重指针
return 0;
}
(2)一重指针变量和二重指针变量本身占4个字节内存空间(32位系统中,64位则是8个字节)
#include <stdio.h>
int main(void)
{
char **p1; //二重指针
char *p2; //一重指针
printf("sizeof(p1) = %d",p1); //用sizeof来计算占几个字节内存空间
printf("sizeof(p2) = %d",p2);
return 0;
}
1.2 二重指针的本质
(1) 二重指针的本质上也是指针变量,和普通的指针的差别就是它指向的变量类型必须是一个一重指针。二重指针其实也是一种数据类型,编译器在编译时会根据二重指针的数据类型来做静态类型检查,一旦发现运算时数据类型不匹配编译器就会报错。
(2)C语言中如果没有二重指针行不行?其实是可以的。一重指针完全可以做二重指针做的