相关疑难解决方法(0)

C的常见数组长度宏?

我已经看到了几个浮动数组长度的宏:

这个问题:

  • #define length(array) (sizeof(array)/sizeof(*(array)))
  • #define ARRAY_LENGTH(array) (sizeof((array))/sizeof((array)[0]))
  • #define SIZE(array, type) (sizeof(array) / (sizeof(type))

和Visual Studio的_countof:

#define _countof(_Array) (sizeof(_Array) / sizeof(_Array[0]))
Run Code Online (Sandbox Code Playgroud)

我想知道的是:

  1. 那些使用array[0]和有*array什么区别?
  2. 为什么要首选?
  3. 它们在C++方面有区别吗?

c c++ arrays c-preprocessor

32
推荐指数
2
解决办法
3万
查看次数

查找函数内部的数组长度

在下面的程序中,数组的长度ar在main中是正确的,但是temp它显示了ar我的计算机上指针的长度为2(以单位为单位sizeof(int)).

#include <stdio.h>

void temp(int ar[]) // this could also be declared as `int *ar`
{
    printf("%d\n", (int) sizeof(ar)/sizeof(int));
}

int main(void)
{
    int ar[]={1,2,3};
    printf("%d\n", (int) sizeof(ar)/sizeof(int));
    temp(ar);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我想知道如何定义函数,以便在函数中正确读取数组的长度.

c arrays

18
推荐指数
4
解决办法
3万
查看次数

标签 统计

arrays ×2

c ×2

c++ ×1

c-preprocessor ×1