gpt4 book ai didi

c - C 中的线性间隔数组

转载 作者:行者123 更新时间:2023-12-02 02:57:58 24 4
gpt4 key购买 nike

我正在尝试在 C 中复制 Matlab 和 numpy (python) 中的 linspace 函数,但是我不断收到有关取消引用 NULL 指针的警告。

我在 C 语言方面是个新手,之前只使用过 Matlab、Python 和 lua,指针是值得我尝试和思考的东西!

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

double* linspace(double init, double fin, int N) {
double *x;
int i = 0;
double step = (fin - init) / (double)N;
x = (double*)calloc(N, sizeof(double));

x[i] = init; /*<=== Line 14*/

for (i = 1; i < N; i++) {
x[i] = x[i - 1] + step;
}
x[N - 1] = fin;
return x;
}

int main() {
double *x_array = linspace(0, 10, 1000);

printf(&x_array);

free(x_array);
return 0;
}

我得到了确切的警告:

Warning C6011   Dereferencing NULL pointer 'x'. Line 14

显然,我确定这只是一个菜鸟错误,但我不确定如何对其进行排序!

谢谢。

最佳答案

以下消息:

Warning C6011   Dereferencing NULL pointer 'x'. Line 14

不是运行时错误。这是 Microsoft C++ 编译器发出的措辞非常糟糕的警告(请参阅 https://learn.microsoft.com/en-us/cpp/code-quality/c6011?view=vs-2019 ),关于可能您可能会取消引用一个指针,该指针在运行时可能NULL

如果calloc()无法分配内存,您的指针将为NULL,您可能不需要担心这种可能性,但为了让编译器满意并且为了防止出现警告,您可能需要在继续取消引用指针之前 ASSERT() 指针不为 NULL

如果您想编写完美健壮的代码,那么您需要添加代码,以便在 calloc() 返回 NULL 时使您的函数优雅地失败。

关于c - C 中的线性间隔数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60695284/

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