簡體   English   中英

如何在C中找到多維數組的維數

[英]How to Find Dimension of a Multiple Dimension Array in C

我宣布了一個像這樣的二維數組:

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

我如何找到第一個維度?

sizeof array / 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;
}


*如果操作數是type-name ,則需要parens,即使sizeof是運算符而不是函數。 但是在C語法中出現type-name每個地方(聲明者都不使用該生產),然后需要圍繞它的parens。 因為在用於各種C規范的半正式語法中沒有針對類型名稱的單獨生成,所以它們在生成中指定了所需的parens,這些parens定義了諸如sizeofgeneric-associationscast-expressions 但是那些parens確實存在,以便能夠解析表達式語法中的類型。 它們是你可能稱之為“類型表達式”的語法的一部分,但考慮到這些東西的使用有限,它們實際上並沒有任何這樣的產生或術語。

你為什么不給:

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

一槍?

這假設您知道數據類型(char *)和其他維度(3)。

您可以將結構的大小除以每個元素的大小以獲得元素的總數,然后將其除以第一個維度,得到第二個維度。

旁白:我的原始答案使用'sizeof("a")'當然是錯誤的,因為它是數組的大小(2,是'a'和'\\ 0'),而不是指針(4)我可怕的過時的32位機器)。 但我喜歡我得到兩個贊成錯誤答案的方式 - 在投票之前,你不是真的在這里檢查答案嗎? :-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM