代码之家  ›  专栏  ›  技术社区  ›  ZZ Coder

如何在C中查找多维数组的维数

  •  5
  • ZZ Coder  · 技术社区  · 17 年前

    char *array[][3] = {
        {"a", "b", "c"},
        {"d", "e", "f"},
        {"u", "v", "w"},
        {"x", "y", "z"}};
    

    如何找出第一维度?

    2 回复  |  直到 17 年前
        1
  •  11
  •   DigitalRoss    10 年前

    sizeof数组/sizeof数组[0]

    例子: *

    #include <stdio.h>
    
    int main(void) {
      int array[4];
    
        printf("%zd\n", sizeof array / sizeof array[0]);
        printf("%zd\n", sizeof (int));
        printf("%ld\n", (long)(sizeof array / sizeof array[0]));
        return 0;
    }
    


    *如果操作数是a,则需要paren type-name sizeof 运算符不是函数。但是每一个地方 出现在C语法中(声明器不使用该产品),然后需要在其周围使用参数。因为在用于各种C规范的半形式语法中,parens中没有单独的类型名称产生式,所以它们在产生式中指定了所需的parens,定义了如下内容 , generic-associations ,及 cast-expressions . 但是这些参数确实存在,以便能够在表达式语法中解析类型。它们是你可能称之为“类型表达式”的语法的一部分,但是由于这些东西的使用有限,它们实际上没有任何这样的结果或术语。
        2
  •  4
  •   paxdiablo    17 年前

    你为什么不给出:

    sizeof(array) / sizeof(char*) / 3
    

    一枪?

    将结构的大小除以每个元素的大小,得到元素的总数,然后除以第一个维度,得到第二个维度。

    旁白: 我最初的答案是 'sizeof("a")'