c - 我应该从以下代码中得到什么

标签 c

我正在学习 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));
}

我的印象是 gh 都是长度为 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/

相关文章:

c - K&R练习5-3 : passing pointers to functions

c - C 语言扫雷

c - 从左到右评估 for 循环内的语句,用逗号分隔

关于c中的free(指针)的困惑

c - 在 MIPS 中扩展或避免 addiu

c - 将字符串扫描成结构

c++ - C 与 C++ 函数问题

c - scanf() 根据变量声明顺序重置第一个结果

c - 为什么这个模数运算符给我带来麻烦?

c - LinkedList 将字符串输入节点并打印列表?