我的问题涉及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)
非常感谢!
初次使用可能会导致内存泄漏,而无需注意。
第二种用法更好,但是您错误地使用了箭头运算符,它应该是:
void func(stc *stcP, int d, char c)
{
stcP -> data = d;
stcP -> ch = c;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
149 次 |
| 最近记录: |