栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

sizeof的误用

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

sizeof的误用

自己也是一个刚开始接触c++的小白,这两天在看数据结构时,遇到冒泡算法,具体的代码如下

#include
using namespace std;

void Bubblesort(int list[],int len);

int main()
{
    int a[] = { 20,10,2,23,4,5,23,2,424,4,12 };
    int len = sizeof(a) / sizeof(a[0]);
    Bubblesort(a,len);
    system("pause");
    return 0;
}

void Bubblesort(int list[], int len)
{
    for (int i = 0; i     {
        for (int j = 0; j         {
            if (list[j] > list[j + 1])
            {
                swap(list[j], list[j + 1]);
            }
        }
    }
    for (int i = 0; i < len; i++)
    {
        cout << list[i] << "  ";
    }
}

在写Bubblesort()时我就在想为什么要传一个len的整数  我直接用sizeof(list)/sizeof(list[0])多好

但是在后面运行时,就开始出错。

如果sizeof(数组名)的调用有两种情况:
1. 数组作为参数压栈,并作为参数传入 sizeof(数组名) :计算出来的值实际上是指针的长度。
2. 数组是在当前的函数中定义,随后作为参数 传入 sizeof(数组名) : 计算出来的值是整个数组的长度。但是如果当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。
————————————————
版权声明:本文为CSDN博主「WalleFu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/walle_love_eva/article/details/17175423

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/347215.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号