【问题标题】:sizeof(array) / sizeof(int) [duplicate]sizeof(array) / sizeof(int) [重复]
【发布时间】:2013-05-21 03:20:45
【问题描述】:

在函数中我声明了一个数组:

int char_count_array[118] = {0};

稍后,我将这个数组传递给一个函数并计算以下内容:

int xx = sizeof(char_count_array); 
int xy = sizeof(char_count_array)/sizeof(int);  

但是,我得到的结果是:xx = 4 xy = 1

我以为我会得到:xx = 472(118 * 4) xy = 118 (472 / 4)

有人知道我在这里做错了什么吗?

【问题讨论】:

标签: c arrays sizeof


【解决方案1】:

如果你将它传递给一个函数,它很可能以int* 而不是int[118] 的形式出现。所以你的sizeof 正在返回一个指针的大小。当您将 C 数组传递给函数时,通常还会传递元素的数量。

my_func( arr, sizeof(arr)/sizeof(arr[0]) );

【讨论】:

    【解决方案2】:

    当您将数组传递给函数时,您实际上是在传递一个pointer,它在您的机器上的大小为4。如果您需要知道数组的大小,您需要将大小作为另一个参数传递给函数。

    【讨论】:

      猜你喜欢
      • 2013-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-19
      • 2019-03-12
      • 2010-11-09
      相关资源
      最近更新 更多