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

ome*_*mer 4 c struct pointers

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

struct stc {
       int data;
       char ch;
}
Run Code Online (Sandbox Code Playgroud)

在我的程序的Main()函数的开头声明。我想使用一个函数来设置结构体中的字段值(即data)。

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

约定1: 编写一个函数,返回一个类型为stc的指针:

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

    return tmp;
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

非常感谢!

Yu *_*Hao 5

初次使用可能会导致内存泄漏,而无需注意。

第二种用法更好,但是您错误地使用了箭头运算符,它应该是:

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