在C中获取指针的大小

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

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

 char *p; 

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

 sizeof(p) sizeof(char *) 

导致malloc()调用,例如:

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

最后一个版本有一些好处,如果ppc的类型改变,表达式仍然分配正确的空间。

这应该是诀窍:

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

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