例如,我有一个功能:
void build()
{
struct Node *node;
node = (struct Node*)malloc(sizeof(struct Node));
}
是否可以从外部访问指针“节点”?
答案 0 :(得分:0)
C是一种非常简单易懂的语言。您唯一的选择是明确地将节点值放在某处,eiter:
选项2和3是最常见的选项。作为函数的一个参数:
void build(struct Node **node_param)
{
struct Node *node;
node = (struct Node*)malloc(sizeof(struct Node));
*node_param = node;
}
对于选项3可以简单地说:
struct Node * build()
{
struct Node *node;
node = (struct Node*)malloc(sizeof(struct Node));
return node;
}
您可以创建一个独立变量,也可以创建一个包含更多字段的结构,以防您有多个值从函数返回。
答案 1 :(得分:0)
是否可以从外部访问指针“节点”?
不,不是这个确切的指针,因为你不知道malloc返回的内存地址。如果从函数返回初始化指针,或者将其作为参数传递给此函数,则可以访问Node
指向的*node
实例,在函数内部初始化并在此之后使用。
示例:
// pass pointer to pointer, so we will change original pointer not a copy
void build( struct Node **nodePtr)
{
struct Node *node;
node = malloc( sizeof( struct Node));
// ^^^^
// no need to cast result of malloc in C
*nodePtr = node;
// the rest...
}