【发布时间】:2013-12-21 04:24:23
【问题描述】:
#include<stdio.h>
#include<stdlib.h>
int main ()
{
int a,n;
int * ptr_data;
printf ("Enter amount: ");
scanf ("%d",&a);
int arr[a];
ptr_data = (int*) malloc ( sizeof(int) );
for ( n=0; n<a; n++ )
{
printf ("Enter number #%d: ",n);
scanf ("%d",&ptr_data[n]);
}
for ( n=0; n<a; n++ )
arr[n] = ptr_data[n]; //values in heap are copied to an array.
printf("%d\n",sizeof(ptr_data));
free (ptr_data);
printf ("Output: ");
for ( n=0; n<a; n++ )
printf("%d\n",arr[n]);
return 0;
}
sizeof 函数将指针的大小打印为 4(整数大小)。但是我运行一个循环来获取要存储在堆中的值(scanf,.),那么这个后续的指针映射在第一次之后是如何发生的呢?如,第一次我明确编码 ptr_data 包含大小为 4。但在那之后,当我想存储另一个整数时,这个指针显示另一个随机内存引用(这个映射解释就是我想要的。)
【问题讨论】:
标签: c pointers memory malloc heap-memory