gpt4 book ai didi

C 计算数组中已初始化元素的数量

转载 作者:行者123 更新时间:2023-11-30 19:18:31 25 4
gpt4 key购买 nike

我的数组是:

int array[100];

如果我用包括 0 在内的整数初始化前 n 个元素(n < 100),而其余元素未初始化,我如何计算 n?

我尝试使用以下代码进行正常的 while 循环:

int i = 0;
int count = 0;
while (a[i++])
count++;

但是,这些代码的问题是它没有计算值为 0 的元素(它将 0 视为 FALSE)。我该如何克服这个问题?

更新:以下是此问题的背景

我有以下代码:

int a[100];
int i;
for (i = 0; i < 100; i++)
scanf("%d", &a[i]);

如果我必须输入(只是一个例子):

1 0 1 0 1 *

那么数组的前 5 个元素将为:1 0 1 0 1。其余元素将未初始化。在这种情况下,如何计算这些已初始化元素的数量才能得到 5?

最佳答案

如果你不能简单地记录已经初始化了多少个元素,那么你需要使用像INT_MIN(最大的负int)这样的“神奇”值来知道何时不使用某个元素。或者,不存储 int,而是存储如下内容:

struct element {
int value;
int flags; // 0 means not used
};

哦,还有一个想法:将初始化元素的计数存储在第一个元素中。这就是 malloc() 有时的工作原理。然后,您可以使数组有 101 个元素,并将 (array + 1, array[0]) 传递给需要大小为 100 的数组的函数。

关于C 计算数组中已初始化元素的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26647490/

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