写作结构

Writing structures

我正在学习 C,目前正在学习结构。我正在查看以下代码:

struct client {
    char name[20];
    int key;
    int index;
};

struct client Client[100]; 

int function(void *ClientDetail) {
    struct client *clientDetail = (struct client*) ClientDetail; // what is this line doing?
}

能否请您解释一下注释行的重要性?

谢谢

这一行

struct client *clientDetail = (struct client*) ClientDetail;

重新解释存储在指针 ClientDetail 中的地址,由于此声明

,其类型为 void *
int function(void *ClientDetail) {

作为 struct client.

类型对象的地址

现在使用指针 clientDetail 您可以访问寻址内存,就好像存在 struct client.

类型的对象一样

请注意,使用仅首字母不同的标识符 ClientDetailclientDetail 是个坏主意。

函数function接受一个void*类型的参数并将其赋值给局部变量。类型转换 (struct client*) 是不必要的并且没有任何效果,因为数据类型 void* 可以隐式转换为任何指针类型。请注意,这仅适用于编程语言 C,不适用于 C++。

在发布的代码中,函数参数和局部变量的名称非常相似。但是,由于 C 区分大小写,编译器认为这些名称不同。