私の質問は、C ポインターのトピックに言及しています。次のシナリオを想像してください: 次のように定義された「stc」という名前の構造体変数があります。
struct stc {
int data;
char ch;
}
プログラムの Main() 関数の先頭で宣言されています。関数を使用して構造体 (つまりdata )のフィールドに値を設定したいと思います。
さて、私の質問は、次の規則のどれが優れているか、そしてその理由は何ですか?
規則 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;
}
どうもありがとう!