【发布时间】:2017-04-02 18:00:41
【问题描述】:
这是我的第一篇文章。我对 C 的指针及其与结构的关系感到非常困惑。我已经搜索了更多信息,但无法真正得出结论。例如给定这个结构定义
typedef struct node
{
int info;
struct node *next;
}NODE;
那么这四种声明的区别和作用是什么;
1. NODE *node1 = malloc (sizeof(NODE));
2. NODE *node1 = (struct node *) malloc (sizeof(NODE));
3. NODE *node1 = (struct node *) malloc (sizeof(NODE *));
4. NODE *node1 = malloc (sizeof(NODE *));
提前致谢。
【问题讨论】:
-
您的问题不在于指针或结构,而在于
C++和sizeof -
在 C 中,您不会从 malloc 转换返回值 - 请参阅 stackoverflow.com/questions/605845/…
-
@EOF - 谁提到了 C++?
-
如果删除不必要的强制转换,则只剩下两个示例:
struct的内存和struct指针的内存。 -
@JustinTime 指针总是相同大小的例外情况,这里有一个SO question 有更多链接。
标签: c list pointers stack structure