c - 访问函数内部创建的数据结构?

标签 c memory dynamic struct malloc

例如,我有一个函数:

void build()
{
   struct Node *node;
   node = (struct Node*)malloc(sizeof(struct Node)); 
}

是否可以从外部访问指针“节点”?

最佳答案

C 是一种非常简单的语言。您唯一的选择是显式地将节点值放在某处,或者:

  1. 全局变量
  2. 函数的参数
  3. 返回值

选项 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;
}

您可以创建一个独立变量,也可以创建一个包含更多字段的结构体,以防您的函数要返回许多值。

关于c - 访问函数内部创建的数据结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26328845/

相关文章:

c++ - SDL 为什么在堆上而不是堆栈上创建纹理

c# - 在 .NET Standard 库中使用动态

c - 使用 getchar() 清除输入缓冲区时如何避免按两次 Enter 键?

c - 如何格式化输出文本,使不同长度的可变字符串排列在多行中?

C - 确定使用哪个定界符 - strtok()

ios - 我需要使计时器失效/释放吗?

c++ - 多个线程写入同一个套接字导致问题

c++ - 为什么 vector.reserve(2) 后跟 v[0] = 2 被认为是不正确的?

c - C中的动态数组导致段错误

c# - 从 C# 调用 tap_example.py 获取 Membase TAP Stream