gpt4 book ai didi

c - 如何在运行时在 C 中扩展一维数组?

转载 作者:太空宇宙 更新时间:2023-11-04 06:29:26 24 4
gpt4 key购买 nike

我正在学习C语言,我有一个关于动态内存分配的问题。
假设我有一个程序,用户必须输入数字或键入字母“E”才能退出该程序。用户输入的数字必须存储在一维数组中。这个数组以一个位置开始。
我该怎么做才能将我的整数数组增加到用户输入的每个数字以将此数字存储在这个新位置?我想我必须使用正确的指针?然后,如何打印存储在数组中的值?
我找到的所有示例对于初学者来说都很复杂,难以理解。我阅读了有关 malloc 和 realloc 函数的信息,但我不知道该使用哪一个。
谁能帮我?谢谢!

void main() {
int numbers[];

do {
allocate memory;
add the number to new position;
} while(user enter a number)

for (first element to last element)
print value;
}

最佳答案

如果需要在运行时扩展数组,则必须动态分配内存(在堆上)。为此,您可以使用 malloc或更适合您的情况,realloc .

此页面上的一个很好的示例,我认为它描述了您想要的内容。:http://www.cplusplus.com/reference/cstdlib/realloc/

从上面的链接复制粘贴:

/* realloc example: rememb-o-matic */
#include <stdio.h> /* printf, scanf, puts */
#include <stdlib.h> /* realloc, free, exit, NULL */

int main ()
{
int input,n;
int count = 0;
int* numbers = NULL;
int* more_numbers = NULL;

do {
printf ("Enter an integer value (0 to end): ");
scanf ("%d", &input);
count++;

more_numbers = (int*) realloc (numbers, count * sizeof(int));

if (more_numbers!=NULL) {
numbers=more_numbers;
numbers[count-1]=input;
}
else {
free (numbers);
puts ("Error (re)allocating memory");
exit (1);
}
} while (input!=0);

printf ("Numbers entered: ");
for (n=0;n<count;n++) printf ("%d ",numbers[n]);
free (numbers);

return 0;
}

请注意,数组的大小是使用count变量记住的

关于c - 如何在运行时在 C 中扩展一维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22357477/

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