【发布时间】:2021-08-18 06:16:22
【问题描述】:
我正在学习 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?
}
您能解释一下注释行的重要性吗?
谢谢
【问题讨论】:
-
重要性?每个角色都很重要,除了 cmets。
-
你在哪里找到这个代码?
-
@AndreasWenzel 抱歉,我试图发布一个 sn-p 代码,但我犯了一个错误。修好了。
-
请注意,如果
ClientDetailvoid 指针指向的内存实际上不是struct client结构,则代码会调用未定义的行为,因为它违反了strict aliasing rule。它还可以调用未定义的行为,因为它可能违反运行它的系统上的任何对齐限制。任何告诉你“但它有效”的人left out the "until it doesn't" part。