先看看基础类型,给出下面的一段代码
这段代码实现了两个整数的交换,再看看下面的代码
运行的结果如下:
可以看到虽然指定了结构体的地址,但是当要访问其成员变量a和b时发生了段错误,说明a和b并没有实际分配内存空间,至于为什么会出现a的地址0x40000000和b的地址0x40000004,实际上这里只是根据类型计算出偏移量,也就是说结构体就像数组一样,结构体名称本身就是一个指针,再看下面的代码
InitLinkListOne虽然传进去的是一个指针,但是只是结构体本身,而InitLinkListTwo传进去的参数才是真正的结构体的指针,也就是InitLinkListOne传的是值,而InitLinkListTwo传的是引用,所以对于结构体的操作,需要注意指针的使用,到底是对引用操作还是对值的操作,这影响到你接口的设计。
结果如下: