gpt4 book ai didi

c - 段错误 11 但为什么呢?

转载 作者:行者123 更新时间:2023-11-30 19:33:37 26 4
gpt4 key购买 nike

我的代码有问题,但我不知道为什么会出现段错误 11。错误发生在行

#include <stdio.h>
#include "VectorMath.h"

int getUserInput() {
int userinput;

printf("1) Calculating new vector and distance \n");
printf("0) Exit \n");

scanf("%d", &userinput);

return userinput;
}

void getUserPoint(int vector[3]) {
int userinput;
char coordinate[] = {'x', 'y', 'z'};
int counter = 0;

for(counter = 0; counter < 3; counter++){
printf("%c", coordinate[counter]);
scanf("%d", &userinput);
vector[counter] = userinput;
}
}


int main() {
int vectorA[3];
int vectorB[3];

int input = 0;
int counter = 0;

int *p_result;

double result;

_Bool run = 1;

while(run) {
input = getUserInput();

if (input == 1){
printf("Enter point A (x,y,z) \n");
getUserPoint(vectorA);
printf("Enter point B (x,y,z) \n");
getUserPoint(vectorB);
}else if(input == 0) {
break;
}

result = distance(vectorA, vectorB, p_result);

printf("The distance between the points A and B is %.2lf \n", result);
printf("The vector between the point A and B is \n");
for (counter = 0; counter < 3; counter++){
printf("%d \n", p_result[counter]);
}
}

return 0;
}

这是主要方法。该错误发生在 for 循环之后(或内部)。指针在此 .c 文件中初始化:

#include "VectorMath.h"
#include <math.h>

double distance(int pointA[3], int pointB[3], int *p_result) {
double distance_result;
int vectorbtw[3];
int counter = 0;

for(counter = 0; counter < 3; counter++) {
vectorbtw[counter] = pointB[counter] - pointA[counter];
}

p_result = vectorbtw;

for(counter = 0; counter < 3; counter++) {
distance_result += pow(vectorbtw[counter], 2);
}

distance_result = sqrt(distance_result);

return distance_result;
}

这是标题:

#ifndef VectorMath_h
#define VectorMath_h
double distance(int pointA[3], int pointB[3], int *p_result);
#endif

抱歉代码太长,但我认为您需要完整的代码。正如我所说,我不知道为什么会发生这种情况,因此 p_result 指针在另一个 .c 文件中初始化,并且指向数组的开头。

编辑:我应该说这样做的目的是我有一个函数可以计算两点之间的距离并返回两点之间的距离和 vector 。这就是为什么我用 p_result 指针这样做。

最佳答案

您不会在任何地方初始化int *p_result;。您将统一指针的值传递给距离例程。该本地副本设置为指向本地数组,但在该函数调用之后,主函数中的 p_result 仍未初始化。

关于c - 段错误 11 但为什么呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45222928/

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