在C中何时使用指针

在C中何时使用指针,c,pointers,struct,dynamic-memory-allocation,C,Pointers,Struct,Dynamic Memory Allocation,我有一个这样的结构: typedef struct { int hi; } my_struct; 使用此选项是否有优势: my_struct *test = malloc(sizeof(my_struct)); test->hi = 1; 与此相反: my_struct test; test.hi = 1; 不,通常情况正好相反。如果您能使用该格式满足您的要求 my_struct test; test.hi = 1; 这样做总是更好,运行时的开销更少。如果可以不使用内存分配

我有一个这样的结构:

typedef struct {
    int hi;
} my_struct;
使用此选项是否有优势:

my_struct *test = malloc(sizeof(my_struct));
test->hi = 1;
与此相反:

my_struct test;
test.hi = 1;

不,通常情况正好相反。如果您能使用该格式满足您的要求

my_struct test;
test.hi = 1;

这样做总是更好,运行时的开销更少。如果可以不使用内存分配器函数,那么使用内存分配器函数通常没有任何好处。

这取决于您在做什么。只要看这两段代码,就没有实际的区别了,除了第一种情况,即动态分配,千万不要忘记释放内存。两者都会为结构分配内存,但malloc会从堆中分配,mystruct test将在堆栈上分配它们很有用,比如当您希望您的程序实际生成某些内容,而不是让它自己进行私有计算时,智能编译器会将其优化为无操作-