如何在内存中分配指针变量?内存分配是否依赖于数据类型?

时间:2011-05-18 10:36:21

标签: c pointers

void main
{ 
 int a,*b;

 a=10;

 a=&b;

 printf("value of a %d",a);

 printf("value of b %d",b);

}

如何在内存中分配指针变量?内存分配是否依赖于数据类型?

4 个答案:

答案 0 :(得分:4)

它们的分配方式与(例如)整数相同。他们指出的东西的类型对此没有影响。

答案 1 :(得分:2)

此特定指针在堆栈上分配,因为它是一个自动变量。这与“普通”非指针变量没有什么不同。如果“内存分配”是指分配的 size ,那么是,指针may depend on the pointee type的大小。

您可以找到sizeof指针的大小。在这种情况下,b占用sizeof(int *)个字节,这取决于平台(在现代机器上通常为4或8个字节)。

如果需要,可以在freestore(堆)上分配一个指针:

int **pp = malloc(sizeof(int *));  // allocates space for a single pointer

(注意,顺便说一下,你的示例程序是错误的:a=&b应该是b=&a。)

答案 2 :(得分:0)

自动分配最终在stack上。动态分配最终在heap上。无论它是什么数据类型。

答案 3 :(得分:-1)

指针本身就是一个指向其他变量的变量。它始终包含它指向的任何地址。由于地址大小相同,所以无论指向什么指针,所有指针都具有相同的大小。