我想创建一个由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=40
和9*sizeof(float)=9*4=36
吗?有人可以向我说明为什么两个数组都得到8个数字吗?
答案 0 :(得分:0)
x
和y
未声明为数组。它们是指向内存位置的指针。取决于系统,指针可能是8个字节。这就是您所看到的。
如果您声明一个数组int z[10]
,并做了sizeof(z)
,则将得到10*sizeof(int)
。