在C中获取指针的大小

时间:2012-03-18 16:41:48

标签: c pointers sizeof

如何使用sizeof在C中获取指针的大小?我想malloc一些内存来存储指针(而不是指向的值)。

3 个答案:

答案 0 :(得分:31)

给出一个任意类型(我在这里选择char,但这是为了具体例子):

char *p;

您可以使用以下任一表达式:

sizeof(p)
sizeof(char *)

导致malloc()调用,例如:

char **ppc = malloc(sizeof(char *));
char **ppc = malloc(sizeof(p));
char **ppc = malloc(sizeof(*ppc));

最后一个版本有一些好处,如果ppc的类型发生变化,表达式仍会分配正确的空格。

答案 1 :(得分:12)

这应该可以解决问题:

sizeof(void*)

答案 2 :(得分:1)

char *ptr;
char **ptr2 = malloc(sizeof(ptr));

应该能够达到你的目的。无论平台是什么,这段代码都应该有效。