我正在学习 C,我编写了以下代码:
#include<stdio.h>
#include <stdlib.h>
void main(){
double *g = calloc(10, sizeof(double));
double h[] = {1,2,3,4,5,6,7,8,9,10};
printf("Size of g: %d\n", sizeof(g));
printf("Size of h: %d\n", sizeof(h));
}
我的印象是 g
和 h
都是长度为 10 的 double 数组,并且由于每个 double 是 8 个字节,sizeof(g)
和 sizeof(h)
应该等于 80。
但是,我得到以下响应:
Size of g: 8
Size of h: 80
我缺少什么,为什么 sizeof(g)
8 在这里?
最佳答案
g 是一个指向 double 的指针。在 64 位代码中,指针的长度为 8 个字节。 h 是一个包含 10 个 double 值的数组,因此 h 的大小为 10 * 8 字节。
关于c - 我应该从以下代码中得到什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14657902/