首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >arr[0]的大小是多少?

arr[0]的大小是多少?
EN

Stack Overflow用户
提问于 2014-09-15 13:39:02
回答 6查看 276关注 0票数 0

下面是代码

代码语言:javascript
运行
复制
#include <stdio.h>
int main()
{
    double arr[0];
    double arr_one[1];
    printf("%d, %d",sizeof(arr[0]), sizeof(arr_one[1]));

    return 0;
}

结果:

代码语言:javascript
运行
复制
8,8

我想知道为什么arr[0]arr_one[1]有相同的尺寸。

EN

回答 6

Stack Overflow用户

发布于 2014-09-15 13:41:13

当使用[]索引数组时,类型是数组元素的类型,在本例中,这两个数组的类型都是double。如果没有索引(即sizeof(arr)),类型将是数组的类型。

票数 5
EN

Stack Overflow用户

发布于 2014-09-15 13:43:24

您甚至没有看到arr_one,也没有真正的arr。您正在使用数组arr来获取它的元素(double)的大小,这些元素当然是相同的。

票数 2
EN

Stack Overflow用户

发布于 2014-09-15 13:45:45

不允许零大小数组,因此代码不应该编译.

如果您的编译器接受它为非标准扩展,那么结果sizeof只取决于表达式的类型;在本例中是double。表达式不进行计算(因此,它是否涉及到非界限数组访问或其他未定义行为并不重要),而且它的类型是相同的,不管它是否具有定义良好的值。

如果您要询问数组的大小,sizeof(arr),那么这将取决于编译器选择如何处理非标准的零大小数组。由于非标准,没有关于其大小的标准规格.

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25849450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档