#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
void input_count(int*);
int* input_values(int);
void show_result(int**, int);
int main()
{
int count = 0;
input_count(&count);
int* array = input_values(count);
show_result(&array, count);
return 0;
}
void input_count(int* count)
{
do
{
printf("배열의 개수는? (0보다 커야합니다) ");
scanf("%d", count);
} while (*count <= 0);
}
int* input_values(int count)
{
int* array = (int*)malloc(sizeof(int) * count);
for (int i = 0; i < count; ++i)
{
printf("%d번째 값은? ", i);
scanf("%d", array + i);
}
return array;
}
void show_result(int** array, int count)
{
int max = 0, min = INT_MAX;
int* max_address = NULL, *min_address = NULL;
for (int i = 0; i < count; ++i)
{
if (*array[i] > max)
{
max_address = *array + i;
max = *max_address;
}
if (*array[i] < min)
{
min_address = *array + i;
min = *min_address;
}
}
printf("최대 원소의 주소: %p, 값: %d\n", max_address, max);
printf("최소 원소의 주소: %p, 값: %d\n", min_address, min);
}
我学编程才10天,技术还很差,但我想解决这个问题。
show_result函数抛出异常:
抛出的异常(0x00007FF6BE02596B,Main.exe):0xC0000005:0xFFFFFFFFFFFFFF.
图片:
我认为Null是问题所在,但我不知道反向引用的含义。
1条答案
按热度按时间s3fp2yjn1#
通过指向动态分配数组的指针按引用传递指向该数组的指针是没有意义的
因为指针在函数show_result中没有改变。
因此声明函数如下
并称之为
if语句
以及
使用无效表达式。您必须至少编写为
以及
如果将声明如上所示的函数,则不会出现这样的问题。
同时将变量
max
设置为0
没有意义。因为数组的元素类型是
int
,所以它可以包含所有由负数设置的元素。在这种情况下,您将得到错误的结果。例如,可以通过以下方式定义函数