arrays - 来自返回数组最大值的函数的C分段错误
问题描述
我只有一个函数可以找出整数数组的最大值,但我得到一个分段错误,我找不到,因为编译器没有向我显示错误所在的行。
这是我的 C 代码:
#include <stdlib.h>
#include <stdio.h>
//Funktion ermittelt den größten Wert eines Arrays
int groesstesElement(int **arrayPointer){
int max = 0;
for (int i = 0; i < 3; i++) {
if (*arrayPointer[i]>max) {
max = *arrayPointer[i];
}
}
return max;
}
int main (int argc, char **argv) {
int array[4]={1,2,3,4};
int *ptr = array;
int z = groesstesElement(&ptr);
printf("%d\n", z);
return EXIT_SUCCESS;
}
我使用 macOS 和 VSC。
解决方案
在 C 中,数组索引[]
的优先级高于指针取消引用*
:https ://en.cppreference.com/w/c/language/operator_precedence
一些括号修复了段错误。
if ((*arrayPointer)[i]>max) {
max = (*arrayPointer)[i];
}
推荐阅读
- c# - 无序执行是 .Net Core 应用程序中并发线程的常见问题吗?
- css - 为什么蓝色不加起来?
- c# - 在 Angular 和 .Net Core API 中显示自定义服务器端错误消息
- node.js - 如何将 json 对象附加到 javascript 文件中?
- vba - 从收到日期提取电子邮件附件
- video - 如何自动关闭 GStreamer 应用程序?
- node.js - 如何使用 zeit now server 为 NodeJS 表单应用程序提供服务
- android - $BITRISE_DEPLOY_DIR 有哪些可用文件?
- php - 从数据库的codeigniter中的开始时间字段计算结束时间
- javascript - 使用 angularjs 将 yaml 数据解析到浏览器