gpt4 book ai didi

c - 数组和指针,在类似情况下这是更好的写法

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

有没有不用初始化数组大小就可以编写代码的方法?

#include <stdio.h>
#define MAXSIZE 100

int main()
{
int i,n;
int num[MAXSIZE];
printf("Enter the value of n\n");
scanf("%d",&n);
printf("Enter the list of integers\n");
for(i=0;i<n;i++);
scanf("%d",&num[i]);
for(i=0;i<n;i++)
printf("%d\t",num[i]);
return 0;
}

我使用 MAXSIZE,因为编译器要求我初始化大小,每次我将大小留空时都会出现错误。这一切都是因为如果用户想要输入超过 100 个值,我该如何适应他?

使用指针是不是更好的编写程序的方法?我尝试通过更改

#include<stdio.h>
int main()
{
int *num,n,i;
printf("Enter the value of n\n");
scanf("%d",&n);
printf("Enter the list of integers\n");
for(i=0;i<n;i++);
scanf("%d",num+i);
for(i=0;i<n;i++)
printf("%d\t",*(num+i));
return 0;
}

这给我一个警告,说 visual studio 中未初始化的局部变量并且没有输入所有数字。输出是垃圾值。每次执行时,Dev C++ 都会崩溃。任何建议都会有所帮助,在此先感谢大家。

最佳答案

如果您使用的编译器支持可变长度数组(C99 或更高版本,尽管 VLA 现在在 C2011 下是可选的)并且数组的大小相对较小,您可以执行以下操作:

int i, n;
...
scanf( "%d", &n );
int num[n];
// load and print num as before

如果您的编译器不支持 VLA 或者数组大小很大(超过几百 K),那么您将需要使用 malloc 动态分配内存。或 calloc :

int i, n;
...
scanf( "%d", &n );
int *num = malloc( n * sizeof *num );
// load and print num as before

关于c - 数组和指针,在类似情况下这是更好的写法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26998172/

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