函数的参数传递位数组时,如何传递

数组作为形参传递

初学者刚学完数组后,需要将数组作为参数传递时,会直接将数组作为参数传递,实际上

数组作为形参传递时,是以指针传递的。

void print(int* a);
void print(int a[]);

//尽管形式不同,但是上面两个函数是等价的,每个函数的唯一形参都是 int* 类型

使用数组作为形参的函数也必须确保使用数组不会越界。

  • 管理指针形参的三种方法:
    <1>使用标记指定数组的长度 数组本身包含一个结束标记
void print(const char *p)
{
    if (p)  //若p不是一个空指针
    {
        while (*p)  //只要指针所指的字符不是空字符
       {        
           cout << *p++;
       }
    }
}

<2>*使用标准库规范(推荐使用) 传递指向数组首元素和尾元素的指针

void print(const char *begin, const char *end)
{
    while (begin != end)
    {
       cout << *begin++;
    }
    cout << endl;
}   

<3>显式传递一个表示数组大小的形参 专门定义一个表示数组大小的形参
//这种方式,在初学时,踩过数组越界的坑后,一般会使用这种方式写

void print(const char a[], size_t size)
{
    for (size_t i = 0; i != size; ++i)
    {
        cout << a[i];
    }
    cout << endl;
}

验证程序:

void main()
{
    char str[] = "hellowprld";

    print(str);
    print(begin(str), end(str));
    print(str, sizeof(str));
}

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值