gpt4 book ai didi

c - 使用 int 指针参数时 C 中的段错误

转载 作者:太空狗 更新时间:2023-10-29 15:57:50 24 4
gpt4 key购买 nike

我知道 - 另一个段错误问题......我正在尝试运行教授的函数 enterValue,但一直收到段错误。是我做错了什么,还是我没有在他的代码中发现错误?请注意,声明 int* length; 实际上在他的原始代码中写为 int length;。鉴于最后一个参数 valuePtr 是一个指向 int 的指针,所以我认为参数 length 应该被定义为。

#include <stdlib.h>
#include <stdio.h>

#define MAX_LINE 256

char line[MAX_LINE];

int* length;

void enterValue (const char* descriptionPtr,
int min,
int max,
int* valuePtr
)
{
do
{
printf("Please enter the %s (%d-%d): ",descriptionPtr,min,max);
fgets(line,MAX_LINE,stdin);
*valuePtr = strtol(line,NULL,10);
}
while ( (*valuePtr < min) || (*valuePtr > max) );

}

int main ()
{
enterValue ("number of numbers", 1, 256, length);
return(EXIT_SUCCESS);
}

当我运行它时,我得到以下信息:

Please enter the number of numbers (1-256): 4
Segmentation fault

最佳答案

是的,您应该保留 int length 的原始声明。在调用中传递指向它的指针

enterValue ("number of numbers", 1, 256, &length);

这使得参数成为一个指向 int 的指针,并允许函数写入变量。

我使 length 成为一个指针——尤其是没有初始化它指向的地方——你已经创建了一个“写入随机内存”算法。

关于c - 使用 int 指针参数时 C 中的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28003021/

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