当涉及结构时,如何从用户输入中获取#define 值而不是在代码中预先定义它。鉴于下面的代码,我想从用户那里获取值 N,是吗可能还是我应该尝试别的东西
#define N 4
// Data structure to store graph
struct Graph {
// An array of pointers to Node to represent adjacency list
struct Node* head[N];
};
最佳答案
这在您尝试执行的方式中是不可能的。您不能动态地(运行时)重新定义 C 中的类型。 一种替代方法是存储双指针并根据用户要求分配内存。
将图形结构更改为以下内容:
// Data structure to store graph
struct Graph {
// A double pointer to Node to represent adjacency list
struct Node** head;
};
现在,根据 N 的值,您可以动态分配所需的内存。
int N = 4;
Graph g;
g.head = malloc(sizeof(struct Node*) * N);
这里,N
同样可以是#define 或运行时设置的变量。您的其余代码可以保持不变。您可以继续使用 g.head[i]
来引用第 i 个元素,就像您有一个数组一样。
当然,不要忘记在完成后free()
分配的内存,否则会发生泄漏!
关于c - 从用户那里获取#define 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57922262/