- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在我的代码中某处我做了一些非常糟糕的事情。当我的极值变量运行时,我得到了未定义的行为,但大多数时候它甚至没有运行。任何帮助都会非常有用。
#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;
但这也不起作用。我真的不知道哪里出了问题,我真的需要一些帮助。
最佳答案
出现未定义行为的原因是下标运算符 []
优先于间接运算符 *
。 extrema
的值被索引为一个指针数组,这是不正确的,因为那里只有一个指针。
由于您将指针传递给指针,因此需要将星号放在括号内:
if (quadrant == 1)
{
(*extrema)[0] = 0;
(*extrema)[1] = 90;
}
else if (quadrant == 2)
{
(*extrema)[0] = -90;
(*extrema)[1] = 0;
}
关于c - [] 优先于 * 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18338966/
在我正在处理的应用程序上,onCreate 使用 startService() 启动一个服务,随后,该 Activity 在其 onStart 中调用 bindService(到同一服务)。问题是服务
这个问题已经有答案了: Problem joining tables where joined table needs to be ordered before grouping (2 个回答) 已关
上下文(虽然不重要),在 netfilter 模块中,我们使用如下结构: struct data { char mac[ETH_ALEN]; char in6_addr addr; }
Google Chrome 的页面性能审核建议将 CSS 导入放在 header 中的 JS 导入之前,以允许并行下载 CSS 和 JS 文件。 但是,我注意到这会导致 Firefox 在导航到另一个
这个问题已经有答案了: Results of printf() and system() are in the wrong order when output is redirected to a f
这个问题已经有答案了: Results of printf() and system() are in the wrong order when output is redirected to a f
我想获得按 project_id 排序的独特帖子基本上,如果有重复的帖子,我想要其中 project_id 的帖子不为空。 有什么办法可以得到这个吗? 此代码返回唯一的帖子,但它们不是按 projec
我是一名优秀的程序员,十分优秀!