다음 중 어느 것이 더 효율적이고 우수한 코드입니까? 아니면이 일을 해야하는 다른 방법이 있습니까? 구조체에 대한 포인터를 반환하거나 전달하려면?
typedef struct foo {
int width;
int height;
} foo;
... 모두 아래의 예에서이 타입 정의,하지만 정말 임의의 구조 ...
foo *new_foo (int width, int height) {
foo *f
if ((f = malloc(sizeof(foo)))==NULL) return NULL;
f->width = width;
f->height = height;
return foo;
}
void del_foo (foo *f) {free(f);}
int main() {
int width = 3;
int height = 4; // arbitrary values
foo *f
f = new_foo(width, height)
// do something with foo here
del_foo(f);
}
또는
int new_foo (foo *f, int width, int height) {
f->width = width;
f->height = height;
return 0;
}
int main() {
int width = 3;
int height = 4; // arbitrary values
foo *f
if ((f = malloc(sizeof(foo)))==NULL) return NULL;
new_foo(f, width, height)
// do something with foo here
free(f);
}
감사합니다! 모든 오타에 대해 사과드립니다.
미안하지만 오타가 발생했습니다. "void foo_init (foo * f, int 폭, int 높이) "! – sfi
좋아, 그건 아주 중요한 오타 였어! 나는 조금 더 많은 정보로 내 대답을 업데이트했습니다. – simonc
대단히 감사합니다! 사소한 점, 흥미롭고 유용한 정보에 감사드립니다. – sfi