gpt4 book ai didi

c - 整数数组的 malloc 和 realloc 大小

转载 作者:行者123 更新时间:2023-12-04 12:29:10 24 4
gpt4 key购买 nike

我希望能够在程序读取数字时重新分配空间量。例如,在运行时它应该能够读取任意数量的整数,然后将它们打印为“Int Array: (all inputs)”到目前为止,这是我尝试过的:

int main(int argc, char **argv)
{
int i = 0, n, num;
int *A;

A = malloc(sizeof(A));

while(scanf("%d",&num) == 1)
{
A[i] = num;
i++;
}

n = sizeof(A)/sizeof(A[0]);

printf("Int Array: ");
for (i = 0; i < n; i++)
{
printf("%d ", A[i]);
}

return 0;
}

最佳答案

你的代码有一些问题

  1. 语法 int A*; 无效,您的意思是 int *A;
  2. 如果你想分配一个元素,正确的语法是

    A = malloc(sizeof(*A));
  3. 在这一行

    n = sizeof(A) / sizeof(A[0]);

    sizeof() 运算符给出类型的大小,这是一个指针,在这种情况下它与

    n = sizeof(void *) / sizeof(int);

    可以是21

您可以静态设置数组的大小,在这种情况下我建议避免使用 malloc(),或者您可以询问用户,在任何情况下您都无法从指针获取该大小,因此您必须存储它,例如

if (scanf("%d", &size) != 1)
return -1;

A = malloc(size * sizeof(*A));
if (A == NULL)
return -1;
/* proceed to work with `A' and keep `size' somewhere, you need it */
free(A);

关于c - 整数数组的 malloc 和 realloc 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30565449/

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