C中的float数组的内存分配

时间:2018-11-13 16:55:59

标签: c arrays memory malloc

我想创建一个由9个元素组成的float数组。因此,我利用了malloc的primitve函数:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main(void){
  float* y;
  printf("sizeof(float)=%ld\n",sizeof(float));
  y = malloc (10*sizeof(float));
  printf("sizeof(y)=%ld\n", sizeof(y));
  float *x;
  x = (float *) malloc(9*sizeof(float));
  printf("sizeof(x)=%ld\n", sizeof(x));

}

输出如下:

sizeof(float)=4
sizeof(y)=8
sizeof(x)=8

因此,我想知道为什么sizeof(y)sizeof(x)都返回8。它们不应该分别返回10*sizeof(float)=10*4=409*sizeof(float)=9*4=36吗?有人可以向我说明为什么两个数组都得到8个数字吗?

1 个答案:

答案 0 :(得分:0)

xy未声明为数组。它们是指向内存位置的指针。取决于系统,指针可能是8个字节。这就是您所看到的。

如果您声明一个数组int z[10],并做了sizeof(z),则将得到10*sizeof(int)