【发布时间】:2013-08-20 15:24:00
【问题描述】:
在我的代码中的某个地方,我正在做一些非常糟糕的事情。我的极值变量运行时出现未定义的行为,但大多数时候它甚至没有运行。任何帮助都会非常棒。
#include <stdio.h>
void get_extrema(int quadrant, int **extrema)
{
if (quadrant == 1)
{
*(extrema)[0] = 0;
*(extrema)[1] = 90;
}
else if (quadrant == 2)
{
*(extrema)[0] = -90;
*(extrema)[1] = 0;
}
}
void print(int* arr)
{
printf("%i",arr[0]);
printf(",");
printf("%i\n",arr[1]);
}
int main(void)
{
int *extrema = (int*)malloc(2*sizeof(int));
get_extrema(1,&extrema);
print(extrema);
get_extrema(2,&extrema);
print(extrema);
}
我还尝试使用指针算法编辑极值数组,如下所示:
**(extrema) = 0;
**(extrema+1) = 90;
但这也不起作用。我真的不知道哪里出了问题,我真的可以寻求帮助。
【问题讨论】:
-
printf("%s",arr[0]);是可疑的。 %s 用于字符串。
-
@Bathsheba 好点。那是我复制时的错误。
-
@philaeton ;-) 那是少了一个 UB 点
-
@Bathsheba:- 这是一个可能的答案!!!我想你应该把这个作为答案发布!! :)
-
你使用的是什么操作系统?
标签: c undefined-behavior