模除法与 C 中的数组,malloc(自由)



打印范围 [开始, 结束] 中所有可被 n 整除的数字。程序包含 3 个变量,开始、结束和 n 使用 C 编码。这就是我目前所拥有的,我不确定每次用户输入新的开始/结束值时如何分配内存。

size_t  = end;
int *a = malloc((max+1) * sizeof *a);
if (a) {
for (size_t i = 0; i <= max; i++){
a[i] = i;
free(a);
}
}
return 0;

size_t = end;

这句话关系到我。我推荐你,这样做:

int function(int max){
int *a = (int*) malloc ( (max+1) * sizeof(int));
if (a){
for (int i = 0 ; i<=max ; ++i){
a[i] = i;
}
free(a);
return (1);
}
return (0);
}
  • 该函数仅请求向量的大小,在您的情况下,据我所知,不需要其他东西。

  • 我建议您返回 int,这样您就可以检查是否 分配是否成功完成

  • 至少对我来说,size_t的定义是没有意义的。 Size_t是一个函数。Size_t是一个函数,因此,应该用括号( ex size_t() )调用它。括号内的内容是类型、变量或您想知道"大小"的东西。在我的代码中,它被用作sizeof(int),因为您想知道整数的大小,因此您可以分配"内存的整数块">

  • 不要忘记在马洛克之前投掷。马洛克已返回虚空指针(虚空*)。这意味着如果要指向整数,则需要使用此强制转换 (int*)。

  • 我打算如何调用该函数,但是,您应该考虑将 max+1 更改为最大值。对我来说,它使更多的逻辑。

for(int i = start; i<=end; i++){
if(i%n == 0){
printf("%d is divisible by %dn",i,n);
}
}

有一些伪代码可以让你开始。如果您的目标只是打印数字,则不需要动态内存。您只需要通过给定范围的循环[start, end].在里面,您需要一个条件来检查范围内的值是否可以被n整除;研究 mod 运算符%.

最新更新