gpt4 book ai didi

c - 遍历分配的数组

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

假设我想打印 int 类型数组的值。

int *num = malloc(5 * sizeof(int));

我该怎么做?显然,我想在检查完我输入的所有值(其中有 5 个值)后停止。

请注意,我不想做类似的事情:

for (int i=0;i<5;i++)

我想知道我给出的示例中发生了什么。

while(*num) {
printf("%d", *num);
num++;
}

或者

while(num != NULL) {
printf("%d", *num);
num++;
}

最佳答案

C 中的数组不包含其长度。您必须将长度与数组一起传递。

最简单的方法是使用变量:

int i;
for (i = 0; i < 5; ++i)
printf("%d ", num[i]);

NUL 结尾的技巧通常仅用于字符串,字符串的结尾用 NUL 字符标记 ('\0')。当然,如果您自己构建和使用数组,没有什么可以阻止您制定类似的约定。例如,您可以使用 -1 标记数组的末尾:

int *num = malloc(5 * sizeof(int));
num[4] = -1;
int *p;
for (p = num; *p != -1; ++p)
printf("%d ", *p);

关于c - 遍历分配的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36314571/

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