一级指针和二级指针到底有本质区别吗?
我的理解是好像没啥本质区别,无非就是解引用时的大小问题。直接上代码就看懂了:
-
图1中
- 首先,argv, inputs1,inputs2的大小都是8字节(因为在64位系统中,地址类型是8字节)。接下分析inputs1和inputs2(因为argv和inputs1类型完全相同就不分析argv了)。
- *inputs1的类型仍然是指针,所以大小是8字节;*inputs2的类型是char,所以大小是1字节。
- inputs1=inputs2=0x7ffca35a1408,那么printf输出* inputs1的时候,会从0x7ffca35a1408处开始取8个字节输出;但输出* inputs2的时候只会取一个字节输出(高位补符号位)。
-
图2中
- 同图1一样,只不过将inputs2类型改为long long* 了,这样* inputs2的大小就是8B,那么printf输出* inputs2的时候,会从0x7ffca35a1408处开始取8个字节输出,结果和输出* inputs1一样。
图1
图2