我有以下文件结构。我知道指针需要分配内存。文件 A 由达芬奇生成。主要是我写的。
// File A
typedef struct {
int v1;
}s1;
struct s2{
s1 *p1;
};
extern const struct s2 * const p3; // Expr 1
#define untilp1() (*(&p3->p1)) // Expr 2
// File main
#include <stdio.h>
#include "FileA.h"
int main()
{
int v2 = 10;
untilp1()->v1 = v2; // This line results in failure
return 0;
}
Q1 - 我不明白表达式 1。具体来说,我不明白 expr 1 中使用了这么多 const 关键字。我知道术语 extern 的含义。在这种情况下,我猜一个常量指针p3
是未定义的,未声明的,但编译器知道它指向常量结构s2
。它是否正确?如果你能说得更清楚,请详细说明。
Q2 - 我不明白表达式 2。具体来说,我不明白发生了什么(*(&p3->p2))
。我知道 的意思#define
。请详细解释表达式。
Q3 - 在一般编码中,我malloc
在声明使用指针之前分配内存,例如使用。当这些文件由达芬奇生成时,我不确定这是如何处理的。但是我还没有看到我的任何同事使用 malloc 等。有谁知道我是否可以将价值分配v2
给v1
using p3
or untilp1()
?
谢谢你。