gpt4 book ai didi

c - 在C中获取外部数组长度

转载 作者:行者123 更新时间:2023-11-30 14:36:43 25 4
gpt4 key购买 nike

要获取数组长度,我(通常)可以这样做:

sizeof(array) / sizeof(array[0])

如果是多维数组呢,比如:

{"my", "favorite", "things"}

我如何获得它的长度(3)?基本上是最外层数组的长度。

如何检测多数组的“结束”(类似于\0)?

最佳答案

如果使用适当的维度的商,则可以获得每个维度的大小:

#include <stdio.h>

int main(void) {
int array[23][42][7];
unsigned int size_1 = sizeof array / sizeof array[0];
unsigned int size_2 = sizeof array[0] / sizeof array[0][0];
unsigned int size_3 = sizeof array[0][0] / sizeof array[0][0][0];
unsigned int size_e = sizeof array[0][0][0];

printf("Size of 1st dimension: %u\n", size_1);
printf("Size of 2nd dimension: %u\n", size_2);
printf("Size of 3rd dimension: %u\n", size_3);
printf("Size of element: %u\n", size_e);

return 0;
}

输出为:

Size of 1st dimension: 23
Size of 2nd dimension: 42
Size of 3rd dimension: 7
Size of element: 4

一般来说,数组上没有“结束标记”。如果使用动态分配的数组,则需要跟踪大小。

字符串结束标记\0标记char数组的结尾,而是标记字符串的结尾。该数组可以是任意大小。

<小时/>

附加注释,在标准监督者看来不一定是完美的措辞;-)

  1. sizeof 运算符是其后面的表达式的(某种)一元运算符。它过去与类型一起使用,因此可以进行强制转换:

    大小(整数)

    这个习惯让我感觉括号是必要的,而且它是一种函数。 ,事实并非如此。结果将由编译器计算,因此它必须在编译时可计算。

    如果将它与变量之类的对象一起使用,您可以简单地编写:

    变量大小

  2. 如果您在(第二个)最内部维度有一个 char 数组,您可能会希望对每个数组调用 strlen() 。这可能也适用于 char* 作为元素类型。

关于c - 在C中获取外部数组长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57879599/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com