哪种约定在C编程中更好?

我的问题涉及C指针的主题.想象一下以下场景:
我有一个名为“stc”的结构变量定义如下:

struct stc {
       int data;
       char ch;
}

在我的程序中的Main()函数的开头声明.我想设置值
使用函数的结构中的字段(即数据).

现在我的问题是以下哪个更好,为什么?

第1号公约:
写一个函数返回一个stc类型的指针:

struct stc *func(int d, char c)
{
    stc *tmp = malloc(sizeof(stc))
    tmp -> data = d;
    tmp -> ch = c;

    return tmp;
}

然后在不再需要结构时释放分配的内存.

约定2:编写一个函数,该函数接收指向结构的指针并向其发送stc的地址

void func(stc *stcP, int d, char c)
{
     stcP -> data = d;
     stcP -> ch = c;
}

非常感谢!

最佳答案
第一次使用可能会导致内存泄漏而无需小心.

第二种用法更好,但你错误地使用箭头操作符,它应该是:

void func(stc *stcP, int d, char c)
{
    stcP -> data = d;
    stcP -> ch = c;
}

转载注明原文:哪种约定在C编程中更好? - 代码日志