写作结构
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
.
类型的对象一样
请注意,使用仅首字母不同的标识符 ClientDetail
和 clientDetail
是个坏主意。
函数function
接受一个void*
类型的参数并将其赋值给局部变量。类型转换 (struct client*)
是不必要的并且没有任何效果,因为数据类型 void*
可以隐式转换为任何指针类型。请注意,这仅适用于编程语言 C,不适用于 C++。
在发布的代码中,函数参数和局部变量的名称非常相似。但是,由于 C 区分大小写,编译器认为这些名称不同。
我正在学习 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
.
请注意,使用仅首字母不同的标识符 ClientDetail
和 clientDetail
是个坏主意。
函数function
接受一个void*
类型的参数并将其赋值给局部变量。类型转换 (struct client*)
是不必要的并且没有任何效果,因为数据类型 void*
可以隐式转换为任何指针类型。请注意,这仅适用于编程语言 C,不适用于 C++。
在发布的代码中,函数参数和局部变量的名称非常相似。但是,由于 C 区分大小写,编译器认为这些名称不同。