c - 由于排序功能导致的分段错误
问题描述
调用该函数会在运行时sort_array
给我错误segmentation fault (core dumped)
。
#include <stdio.h>
#define SIZE (40)
void sort_array(unsigned char *arr[],int n)
{
unsigned char tmp;
for (int i=0;i<n;i++)
{
for(int j=i+1;j<n;j++)
{
if(arr[j]>arr[i])
{
tmp=*arr[i];
*arr[i]=*arr[j];
*arr[j]=tmp;
}
}
}
}
int main() {
unsigned char test[SIZE] = { 34, 201, 190, 154, 8, 194, 2, 6,
114, 88, 45, 76, 123, 87, 25, 23,
200, 122, 150, 90, 92, 87, 177, 244,
201, 6, 12, 60, 8, 2, 5, 67,
7, 87, 250, 230, 99, 3, 100, 90};
sort_array(test,SIZE);
for(int i=0;i<SIZE;i++)
printf("%c ,",test[i]);
}
解决方案
问题是您的函数数据类型,您不需要将其定义为unsigned char *arr[]
.
这里是修正版:
void sort_array(unsigned char *arr,int n)
{
unsigned char tmp;
for (int i=0;i<n-1;i++)
{
for(int j=i+1;j<n;j++)
{
if(arr[j]>arr[i])
{
tmp=arr[i];
arr[i]=arr[j];
arr[j]=tmp;
}
}
}
}
推荐阅读
- c++ - C++中的非成员函数和全局函数是一样的吗?
- ios - Cocoapods:[!] CocoaPods 找不到 pod "Firebase/Storage" 的兼容版本:
- swift - 如何向用户刷新问题?
- vb.net - [VB.NET]如何解析这个html?
- html - 修复了下拉菜单,但 css 样式妨碍了
- javascript - Logcat 错误和应用程序不断因 android.view.WindowManager$BadTokenException 而崩溃?
- python - Python散景堆积条形图不显示真实值
- function - 仅在存在时运行方法
- c# - 不可预测地旋转 SDL_Surface 会产生不正确的结果
- c# - 如何将一系列 if 语句转换为 for 或 foreach 循环?