C 语言高级主题解析
1. 指针与类型转换
1.1 void 指针的使用
在 C 语言中, void
指针是一种通用指针,可以指向任何类型的数据。以下是一个示例代码:
struct Dog {
void *next;
};
struct Cat {
void *next;
};
struct Dog myDog;
struct Cat myCat;
myDog.next = &myCat;
myCat.next = NULL;
在这个代码中, Dog
结构体的 next
字段是一个 void
指针,因此可以直接指向 Cat
结构体,而无需进行类型转换。不过, void
指针会移除编译器的许多常规安全检查,所以只有在指针确实具有通用性时才应使用。
1.2 const 修饰符
const
修饰符表示变量的值是不可变的。例如:
const int ci = 3;
ci = 4; /* <-- syntax error */
const
修饰符在与指针结合使用时更为有用。例如,声明一个指向 const char
数组的指针