VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 134|回复: 4

如何在函数中获得整形数组的大小

[复制链接]
48_avatar_middle
最佳答案
0 
在线会员 发表于 2019-11-8 21:19:22 | 显示全部楼层 |阅读模式
#include <iostream>
using namespace std;         /////使用标准命名空间



//提取数组中最大值和最小值
void get_min_max(int src[], int* max_s, int* min_s)
{
        cout << src[11] << endl;
        int chang = sizeof(src);                                        //数组作为形参,此处如何获得数组大小?????????????????
        cout << "数组长度为:" << chang << endl;
        for (int i=0; i<chang; ++i)
        {
                if (*max_s<src[i])
                {
                        *max_s = src[i];
                }
                if (*min_s>src[i])
                {
                        *min_s = src[i];
                }
        }
}


int main()
{

        int shuzu[] = { 1,2,3,4,8,9,0,7,6,7,1,50 };
        int l = sizeof(shuzu) / sizeof(int);        //此处可以获得数组大小
        cout << l << endl;

        int max_s = shuzu[0];
        int min_s = shuzu[0];
        get_min_max(shuzu, &max_s, &min_s);
        cout << "max=" << max_s << endl;
        cout << "min=" << min_s << endl;

    return 0;
}





数组作为函数的形参被传入函数,如上述程序所示。
为什么此时利用sizeof函数求出的是8,而如果在主函数中则是12*4=48?
这种情况下如何在函数中获得数组大小?




上一篇:生成失败
下一篇:Vsual Studio 2019的一些问题
51_avatar_middle
最佳答案
8 
online_admins 发表于 2019-11-8 22:11:13 | 显示全部楼层
miracle111 发表于 2019-11-8 21:59
请问为什么函数中求长度会得到8,感觉应该是4啊,
然后第22课课后作业,求数组中的最大值最小值应该如何写 ...

因为你用的是高版本的 vs,工程默认是 x64 位的,所以指针的长度是8个字节,不是4个字节
51_avatar_middle
最佳答案
8 
online_admins 发表于 2019-11-8 21:47:25 | 显示全部楼层
得加个参数,表明数组的长度,之后把参数传进去才行
48_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2019-11-8 21:59:30 | 显示全部楼层
请问为什么函数中求长度会得到8,感觉应该是4啊,
然后第22课课后作业,求数组中的最大值最小值应该如何写?
谢谢
17_avatar_middle
最佳答案
0 
在线会员 发表于 3 天前 | 显示全部楼层
可以用c++里面的STL的Vector容器
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-11-16 05:45

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表