|
本帖最后由 齐天飘雪 于 2021-1-22 11:01 编辑
小作业是这样的:
小作业:
实现一个函数,作用是获取一个数组中的最大值和最小值,函数声明如下:
- void get_min_max(int src[], int* max_v, int* min_v)
- {
- //函数代码写在这个下面
- }
复制代码
一个大佬的解答是这样的:
- void get_min_max(int src[], int* max_v, int* min_v, int arr_len)
- {
- *max_v = src[0], *min_v = src[0];
- for (int i = 0; i < arr_len; i++)
- {
- *max_v = src[i] > *max_v ? src[i] : *max_v;
- *min_v = src[i] > *min_v ? *min_v : src[i];
- }
- }
复制代码
我的测试代码是这样的:
- int main()
- {
- int src[5] = { 1, 2, 3, 4, 5 };
- int* max_v;
- int* min_v;
- get_min_max(src, max_v , min_v , 5);
- cout << "max_v = " << max_v << " min_v = " << min_v <<endl;
- return 0;
- }
复制代码
问题是为什么执行会报错,说我没有初期化指针变量,但是我怎么初期化呢?初期化成NULL程序不能执行,请问这个测试代码写的哪里出了问题,考虑了一天也没想明白,请各位大佬帮帮忙吧
不要直接声明指针,用&获取变量的地址
- int main()
- {
- int src[5] = { 1, 2, 3, 4, 5 };
- int max_v;
- int min_v;
- get_min_max(src, &max_v , &min_v , 5);
- cout << "max_v = " << max_v << " min_v = " << min_v <<endl;
- return 0;
- }
复制代码
|
上一篇: 求大佬分享下这篇帖子的API帮助文档!下一篇: 零基础C++ 37课,析构函数释放两次动态内存报错疑问
|