使用int指针参数时C中的分段错误
我知道-另一个分割错误问题。。。 我试图运行我教授的函数使用int指针参数时C中的分段错误,c,segmentation-fault,C,Segmentation Fault,我知道-另一个分割错误问题。。。 我试图运行我教授的函数enterValue,但一直收到分段错误。是我做错了什么,还是他的代码中有一个我没有发现的bug?注意声明int*length实际上是用他的原始代码写成int-length。考虑到最后一个参数valuePtr是指向int的指针,我认为参数length应该定义为 #include <stdlib.h> #include <stdio.h> #define MAX_LINE 256 char li
enterValue
,但一直收到分段错误。是我做错了什么,还是他的代码中有一个我没有发现的bug?注意声明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);
}
是的,您应该保留原始声明的int-length
。使用在调用中传递指向它的指针
enterValue ("number of numbers", 1, 256, &length);
这使参数成为指向int的指针,并允许函数写入变量
我将length设置为指针,特别是不初始化它指向的位置。您创建了一个“写入随机内存”算法。调用entervalue函数时,整数指针不指向任何对象。
你必须有length=&some\u整数因此整数指针长度
指向某个整数。我看到两个错误,第一个长度
不应该是指针
int length;
其次,传递length
的地址,因为您希望函数修改length
enterValue ("number of numbers", 1, 256, &length);
天哪,我真是个白痴。很抱歉浪费大家的时间:-)@user1185790:没问题。犯错是我们学习的方式。想象一下,如果第一次一切都“正常”的话,你会学到多少!
enterValue ("number of numbers", 1, 256, &length);