【问题标题】:C: Count the actual size of an int-type arrayC:计算一个int型数组的实际大小
【发布时间】:2014-03-02 10:39:41
【问题描述】:

我在获取 int-type 数组的 实际大小 时遇到问题。

注意:我对 char 类型的数组没有任何问题,我得到了我期望的输出。

例如,有这个声明,int arr[3] 和使用sizeof(arr) 将有一个肯定会变化的输出,它可能是 3、6、12 等...取决于位系统。
那么我将如何在这样的代码中获得数组的实际大小:Ideone Code Here

#include <stdio.h>
int countSize[3]={1,2,3};

int main() {
    printf("%d",sizeof(countSize));
    return 0;
}

【问题讨论】:

  • 将值除以元素的大小 - sizeof(countSize)/sizeof(countSize[0])
  • 打印什么?究竟是什么问题?

标签: c arrays int sizeof


【解决方案1】:

看起来像实际大小,你的意思是数组的元素。由于sizeof(countSize) 以字节为单位给出了数组的大小,因此您只需将其除以每个元素的大小,如下所示:

printf("%zu\n", sizeof(countSize) / sizeof(int));

或者更好的是,使用sizeof(countSize[0],因为数组的类型可能会有所不同:

printf("%zu\n", sizeof(countSize) / sizeof(countSize[0]));

使用 char 数组时您会得到预期的结果,因为 sizeof(char) 始终是 1

【讨论】:

    猜你喜欢
    • 2011-12-26
    • 2017-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-18
    相关资源
    最近更新 更多