c - 为什么会出现分段错误,我该如何解决?
问题描述
使用至少 4 个函数进行冒泡排序的 C 程序。(输入、输出、计算、主)
- 不允许使用全局变量。
- 没有
printf
或scanf
在compute
。 - 没有
printf
或scanf
在main
- 输入不应调用
compute
. compute
不应该打电话output
。
我还没有真正理解指针和函数。
#include <stdio.h>
void input(int* size, int* arr[])
{
printf("Enter the size of the array: ");
scanf("%d",size);
printf("Enter the elements of the array\n");
for(int i = 0;i < *size; i++)
{
scanf("%d", arr[i]);
}
}
void swap(int *x,int *y)
{
int temp = *x;
*x = *y;
*y = temp;
}
void bubble_sort(int arr[100],int size)
{
for(int i = 0;i < size - 1;i++)
{
for(int j = 0;j < size - 1 - i;j++)
{
if(arr[j] > arr[j+1])
{
swap(&arr[j],&arr[j+1]);
}
}
}
}
void output(int size,int* arr)
{
printf("Sorted array\n");
for(int i = 0;i < size;i++)
{
printf("%d",arr[i]);
}
}
int main()
{
int* input_values[50];
int size;
input(&size, input_values);
bubble_sort(size,*input_values);
output(size, *input_values);
return 0;
}
没有错误但显示分段错误。我该如何解决这个问题?
解决方案
所以你的问题在这里:
scanf(" %d", arr[i]);
您必须将其更改为:
scanf(" %d", &arr[i]);
这是主要问题,但还有很多其他问题。您还必须更改参数的顺序
bubble_sort(size,*input_values);
至
bubble_sort(input_values,size);
和
output(size, *input_values);
至
output(size, input_values);
此外,为了使它能够正常工作,我已经改变了
scanf("%d", &arr[i]);
至
scanf(" %d", &arr[i]);
推荐阅读
- python - 使用图形 API 删除群组对话的问题
- vb.net - 无法使用带有 AT 命令的 gsm 调制解调器发送英文文本
- laravel - 查询 2 个可能位置是否存在所有数组项
- python - 从列表中一一提取元素并传递给请求有效负载
- sql - 从 sql server 获取正确的信息我需要找到一种方法来提取帐户的当前利率,请参阅下面的详细信息
- jsf - 使用 actionListener 时更新 bean 属性
- ada - 如何使用递归将两个整数的乘积相加?
- javascript - Calculating sleep time on a 24-hour clock
- php - 使用未定义的常量 category_id - 假定为“category_id”(这将在 PHP 的未来版本中引发错误)Laravel
- list - List.Sort by PowerQuery (M) 中的子字符串