1. 结论
大家在看数据结构清华版书时,经常会被里面的 * . -> typedef c语言 c++的切换看的云里雾里,运行里面伪代码经常很困扰,网上也大多把c语言和c++看成一起混合编译处理,导致大家单纯想理解c语言造成很多困扰,下面这篇文章仅针对于c语言详细说明上面几个符号的用法,帮助大家理解纯c代码。
先说结论,在C语言中,对于一个结构体类型变量a
a.next
(&a)->next
上面两种写法是等价的
2. 变量名、地址和多级指针
int a = 1;
对于上面这段代码
可以看成在操作系统内部做了上图的操作,首先,创建了一块内存大小为4个字节,首地址0x0000,结束地址为0x0004,对于编译器来说,该内存与变量名a绑定,通过变量名a,编译器能够知道变量类型为int,为什么叫对于编译器来说呢?因为在程序实际运行的过程中,a对于该程序的运行是没有任何意义的,里面可能存储的是 (0x0000)=4类似的语句,变量名a只是为了方便给人看的。
c语言是允许读取和操作地址的,就有以下语句
int* ptr_a = &a;