邝(kuàng) 2021-09-08 20:33 采纳率: 100%
浏览 32
已结题

C++数组作为函数参数传递的两种方法,数组元素作函数参数的方法不return就会报错,数组名作函数的却不会是为什么?

数组作为函数参数传递的两种方法,但是第一种func()函数不return东西就会报错,第二种却不会是为什么?
1.数组元素作为函数参数:值传递形式

#include <iostream>

using namespace std;

int func(int n);
int main()
{
    int a[5] = { 1,5,7,9,17 };
    cout << "数组元素作为函数实参进行传递后的结果:" << endl;
    for (int i = 0; i < 5; i++)
    {
        a[i] = func(a[i]);          //转到函数func()进行计算
        cout << a[i] << endl;
    }
    return 0;
}

int func(int n)
{
    n *= n;
    return n;
}

2.数组名作为函数实参:地址传递参数形式

#include <iostream>

using namespace std;

void func(int array[],int n);
int main()
{
    int a[5] = { 1,5,7,9,17 };
    cout << "数组元素作为函数实参进行传递后的结果:" << endl;
    func(a,5);
    for (int i = 0; i < 5; i++)
    {
        cout << a[i] << endl;

    }
        
    return 0;
}

void func(int array[],int n)
{
    for (int j = 0; j < n; j++)
        array[j] *= array[j];
    
}

输出结果都为

数组元素作为函数实参进行传递后的结果:
1
25
49
81
289

  • 写回答

2条回答 默认 最新

  • Ecalpal 2021-09-08 20:40
    关注

    1.函数定义一般以
    返回类型 函数名(形参){};
    形式出现,int func(int a,int b) {}这样的是有返回值有形参,这种函数存在的意义是外部有变量要传递进来做处理。
    我的理解是调用该函数的时候,会为函数的形参分配内存,函数调用结束后,形参的内存会被释放,所以要return。
    2.实参变量对形参变量的数组传递是值传递,是单向的,不能形参传给实参;
    但是数组名作为函数参数时,实际上是地址传递,不是值传递,会把实参数组的首地址传递给形参,这样实参和形参地址指向就一样了,所以可以理解为双向传递,与普通变量的差别就在此。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月16日
  • 已采纳回答 9月8日
  • 创建了问题 9月8日

悬赏问题

  • ¥15 Linux环境下CA证书更新问题
  • ¥60 微信小程序如何上传QQ聊天文件
  • ¥300 开发的系统遭到无良商家的破解,请问如何防止再次发生,并追回损失
  • ¥15 java代码写在记事本上后在cmd上运行时无报错但又没生成文件
  • ¥15 关于#python#的问题:在跑ldsc数据整理的时候一直抱这种错误,要么--out识别不了参数,要么--merge-alleles识别不了参数(操作系统-linux)
  • ¥15 PPOCRLabel
  • ¥15 混合键合键合机对准标识
  • ¥100 现在不懂的是如何将当前的相机中的照片,作为纹理贴图,映射到扫描出的模型上
  • ¥15 魔霸ROG7 pro,win11.息屏后会显示黑屏,如图,如何解决?(关键词-重新启动)
  • ¥15 有没有人知道这是哪里出了问题啊?要怎么改呀?