相关疑难解决方法(0)

计算数组的大小

我使用以下宏来计算数组的大小:

#define G_N_ELEMENTS(arr) ((sizeof(arr))/(sizeof(arr[0])))  
Run Code Online (Sandbox Code Playgroud)

但是,当我计算函数中数组的大小(计算的值不正确)而不是调用函数的位置(计算的正确值)时,我看到它计算的值的差异.代码+输出如下.任何想法,建议,提示等.欢迎.

DP

#include <stdio.h>

#define G_N_ELEMENTS(arr) ((sizeof(arr))/(sizeof(arr[0])))

void foo(int * arr) // Also tried foo(int arr[]), foo(int * & arr) 
                    // - neither of which worked
{
   printf("arr : %x\n", arr);
   printf ("sizeof arr: %d\n", G_N_ELEMENTS(arr));
}

int main()
{
   int arr[] = {1, 2, 3, 4};

   printf("arr : %x\n", arr);
   printf ("sizeof arr: %d\n", G_N_ELEMENTS(arr));

   foo(arr);
}
Run Code Online (Sandbox Code Playgroud)

输出:

arr : bffffa40
sizeof arr: 4
arr : bffffa40
sizeof arr: 1
Run Code Online (Sandbox Code Playgroud)

c c++

13
推荐指数
3
解决办法
1万
查看次数

标签 统计

c ×1

c++ ×1