我知道数组声明会导致保留一 block 内存,但对于由指针表示的数组则不会。因为它包含数组第一个元素的地址。
但是关于大小如何从指向单个长整型变为动态声明的长整型数组,我们将非常感谢有关该主题的任何解释。
亲切的问候
示例:
long int *plint = 5; // size is the same as
long int *arr;
arr = (long int*)malloc(5*(sizeof(long int));
arr 的大小与 plint 的大小相同吗?
如果不是,它如何改变大小?
最佳答案
我想你的代码看起来像这样:
long *ptr = 0;
long ra[10];
printf("%d %d\n", (int)(sizeof(ptr)), (int)(sizeof(ra)) );
在这种情况下,ra
不是指针,并且它的大小也不是指针的大小。
&ra[0]
是指向第一个元素的指针,因此您可以这样做:
print("%d\n", (int)(sizeof(&ra[0])));
您会看到它的大小与 ptr
相同。
在大多数情况下,当您在表达式中使用 ra
时,它会“衰减”为指向其第一个元素的指针。但 sizeof
不是其中一种情况。
关于c - 当指针指向单个字符以及动态声明的长整数数组时,指针的大小如何变化? C代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14120865/