首页 > 编程语言 >C/C++ 一维数组和二维数组参数传递的几种方式

C/C++ 一维数组和二维数组参数传递的几种方式

时间:2022-10-23 15:25:36浏览次数:52  
标签:return int ages C++ 参数传递 ++ 数组 printf include

一维数组:

#include <iostream>
#include <windows.h>
#include <string>
using namespace std;
//在以下几种方法中,ages都不是真正的数组,实际上是一个指针 int *ages
int calAverage1(int ages[5]) {
    printf("%d\n",sizeof(ages));
    int s = 0;
    for (int i = 0; i < 5;i++) {
        s += ages[i];
    }
    return s / 5;
}
int calAverage2(int ages[],int n) {
    printf("%d\n", sizeof(ages));
    int s = 0;
    for (int i = 0; i < n; i++) {
        s += ages[i];
    }
    return s / 5;
}
int calAverage3(int *ages) {
    printf("%d\n", sizeof(ages));
    int s = 0;
    for (int i = 0; i < 5; i++) {
        s += ages[i];
    }
    return s / 5;
}
int calAverage4(int* ages,int n) {
    printf("%d\n", sizeof(ages));
    int s = 0;
    for (int i = 0; i < n; i++) {
        s += ages[i];
    }
    return s / 5;
}
int main() {
    int p[5] = {20,30,40,50,60}; 
    //计算平均年龄
    printf("%d\n", calAverage1(p));
    printf("%d\n", calAverage2(p,5));
    printf("%d\n", calAverage3(p));
    printf("%d\n", calAverage4(p,5));
    system("pause");
    return 0;
}

二维数组:

#include <iostream>
#include <stdio.h>
#include <windows.h>
#include <string>
using namespace std;
int calAverage1(int p[3][2]) {
    // 特别注意:此时 ages 不是真正的二维数组
    // 它实际上是一个指向一维数组的指针 int (*ages)[4]
    int s = 0;
    for (int i = 0; i < 3;i++){
        for (int j = 0; j < 2; j++) {
            s += p[i][j];
        }
    }
    return s / (3*2);
}
int calAverage2(int p[][2],int n) {
    int s = 0;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < 2; j++) {
            s += p[i][j];
        }
    }
    return s / (n * 2);
}
int calAverage3(int (*p)[2],int rows) {
    int s = 0;
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < 2; j++) {
            s += p[i][j]; 
        }
    }
    return s / (rows * 2);
}
int calAverage4(int *p, int rows,int rols) {
    int s = 0;
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < rols; j++) {
            s += (*(p+i*rols+ j)); //*(p+i*rols+ j)==》*(p[i*rols+j])
        }
    }
    return s / (rows * rols);
}
int main() {
    int ages[3][2] = {
                        20,35,
                        25,63,
                        78,25
    };
    
    printf("%d\n", calAverage1(ages));
    printf("%d\n", calAverage2(ages,3));
    printf("%d\n", calAverage3(ages, 3));
    printf("%d\n", calAverage4(*ages, 3,2));
    system("pause");
    return 0;
}

标签:return,int,ages,C++,参数传递,++,数组,printf,include
From: https://www.cnblogs.com/smartlearn/p/16817967.html

相关文章

  • c++dump
    //Minidump.h#pragmaonceclassCMinidump{public: CMinidump(); ~CMinidump(); staticvoidCreateDumpFile(LPCSTRlpstrDumpFilePathName,EXCEPTION_POINTERS......
  • MD5 哈希加密算法 - C++ 实现
    MD5加密算法-C++实现写在前头:还在学习中!整个文档写的很匆忙,肯定还有很多不周到的地方.欢迎在评论中提出你的宝贵意见!!算法背景BackgroundMD5消息摘要算法......
  • Java 实例 - 数组差集
    https://www.runoob.com/java/arrays-removeall.htmlhttps://blog.csdn.net/weixin_43552143/article/details/124878630......
  • c++对象的拷贝、构造、虚构
    抽象基类​ 现有如下代码:classAbstract_base{public:virtual~Abstract_base()=0;virtualvoidinterface()const=0;virtualconstchar*mumble......
  • 大规模C++软件开发 卷1 过程与架构 电子书 pdf
    链接:大规模C++软件开发卷1过程与架构  本书通过具体示例演示了基本的设计概念,为各种规模的项目奠定了基础,并演示了成功进行大规模实际开发所需的过程、方法、技......
  • 实验3 数组、指针与现代C++标准库
    5.实验任务5info.hpp#pragmaonce#include<iostream>#include<string>#include<iomanip>usingstd::string;usingstd::cout;usingstd::endl;classinfo{......
  • 数据结构 玩转数据结构 3-5 数组队列
    0课程地址https://coding.imooc.com/lesson/207.html#mid=13422 1重点关注1.1队列的特性FIFO,先进先出,水管 1.2队列的实现参考......
  • C++基础
    C++基础VS快捷键Ctrl+或-跳转到上次鼠标焦点位置CtrlKF按住Ctrl然后按K然后按FCtrlJ代码提示变量声明方式:数据类型变量名=变量初始值#include<iostre......
  • C/C++ 中的几种调试技巧(待续)
    1、利用#define宏定义作为调试开关include<stdio.h>defineDEBUG//可以注释或打开输出intmain(void){inti,sum;for(i=1,sum=0;i<=5;i++){......
  • C++ 函数返回指针
    C++中返回值为指针或者引用的时候,不可以返回局部变量的指针或者引用,因为当此段代码块执行完之后,相应的局部变量,就会被系统释放,指针所指向的那块内存会被操作系统用来做其......