【发布时间】:2021-07-21 21:29:09
【问题描述】:
我对 C 语言相当陌生,我只是在指针上落下,我一直在做练习,我查看了这个网站和谷歌,但我找不到我要找的东西。 (可能是对术语的缺乏经验)
上下文我必须使用一个特定的原型(评分程序使用的)来传递一个字符串数组但是由于我每个函数限制为 25 行我试图将相同的字符串数组传递给另一个函数无济于事,所以这是我的解决方法:
#include <stdlib.h>
int ft_ultimate_range(int **range, int min, int max)
{
int *arr;
int i;
int j;
j = 0;
i = min;
if (min >= max)
{
*range = NULL;
return (0);
}
arr = malloc(sizeof(int) * ((long long int)max - (long long int)min));
*range = arr;
if(arr == NULL)
return (-1);
while (i < max)
{
*range[j] = i;
i++;
j++;
}
return (j);
}
但是,我在*range[j] = i;/ seg 的 vs 代码上获得了 EXC_BAD_ACCESS (code=1)。在终端执行时出错。
我不明白为什么会这样,因为如果我取出星号,我试图将值分配给传递的数组(不兼容的 int 到从 'int' 分配给 'int *' 的指针转换)。
发生了什么事?
你也可以请我指出一个线程解释如何传递字符串数组(或函数之间的int)?
编辑:问题是否有帮助。 (我只是想了解怎么回事)
-
创建一个函数 ft_ultimate_range,它分配和分配一个整数数组。
-
这个 int 数组应该包含 min 和 max 之间的所有值。包含最小值 - 排除最大值。
-
它的原型应该是这样的:
int ft_ultimate_range(int **range, int min, int max); -
应该返回范围的大小(或 -1 错误)。 *如果 min 的值大于或等于 max 的值,range 将指向 NULL,它应该返回 0
【问题讨论】:
-
*range[j]与*(range[j])相同,与您真正想要的(*range)[j]有很大不同。或者只是简单的arr[j]。 -
顺便说一句,代码中的任何地方都没有字符串数组。 ????
-
我建议暂时忘记“分级程序”。相反,通过阅读一本结构良好的书籍来学习 C,并按照书中出现的顺序进行练习。完成后,如果您愿意,可以尝试在线评分(尽管我一直认为这是浪费时间)
标签: c