数组作为函数参数传递
数组作为函数参数传递时,传入的是数组首地址,并非数组本身。今天总算理解了这一点。写了一个打印数组元素的函数,代码如下:

void print1(int arr[]) {int len = sizeof(arr) / sizeof(arr[0]);cout << sizeof(arr)<<endl;for (int i = 0;i < len;i++) {cout << arr[i] << " ";}
}

main函数:

int arr[5] = { 1,2,3,4,5 };print1(arr);

运行结果:
显然,并没有打印出数组所有元素。根据输出,sizeof(arr)=4;
sizeof(arr)/sizeof(arr[0])=1。很明显,如果传入的是数组本身,sizeof(arr)的值一定远大于4。传入的是地址的话,则刚好是4个字节。
再看我写的第二个打印函数:

void print2(int arr[], int len) {for (int i = 0;i < len;i++) {cout << arr[i] << " ";}
}

main函数

int arr[5] = { 1,2,3,4,5 };int len = sizeof(arr) / sizeof(arr[0]);cout << "数组长度:"<<len<<"   数组所占空间:"<< sizeof(arr)<<endl;print2(arr, len);

运行结果:

结果准确无误。
总结:当数组作为函数参数传递时,不能在函数中用sizeof求数组长度。

数组作为函数参数传递相关推荐

  1. C语言基础:数组作为函数参数传递演示源码

    将做工程过程中常用的内容片段记录起来,如下内容内容是关于C语言基础:数组作为函数参数传递演示的内容,应该能对小伙伴也有好处. #include <stdio.h>void show_arr ...

  2. 二维数组作为函数参数传递

    二维数组作为函数参数调用过程中: void Fun(**a, m, n) {//.... } //.... Fun(a,m,n); 调用函数过程中,会发现VS报错: //IntelliSense: & ...

  3. C语言中二维数组作为函数参数传递的方式

    C语言中经常遇到需要将二维数组作为函数参数传递到函数中并进行访问或处理的操作,此处以打印二维数组为例,总结了二维数组作为函数参数的几种方式,包括形参定义.函数中数组元素的访问及函数调用.需要注意的是, ...

  4. C语言学习笔记 (005) - 二维数组作为函数参数传递剖析

    前言 很多文章不外乎告诉你下面这几种标准的形式,你如果按照它们来用,准没错: //对于一个2行13列int元素的二维数组 //函数f的形参形式 f(int daytab[2][13]) {...}// ...

  5. 二维数组作为函数参数传递剖析(C语言)

    前言: 很多文章不外乎告诉你下面这几种标准的形式,你如果按照它们来用,准没错: //对于一个2行13列int元素的二维数组 //函数f的形参形式 f(int daytab[2][13]) {...}/ ...

  6. C语言二维数组作为函数参数传递

    二维数组存放方式 二维数组在内存中是按行存放的,先存储第一行,在接着存储第二行-.. 二维数组作为函数参数 二维数组作为函数的参数,实参可以直接使用二维数组名,在被调用函数中可以定义形参所有维数的大小 ...

  7. 二维数组做函数参数传递

    #include<stdio.h> //#include<> //二位数组作为函数参数时,可以不指定第一个下标 void print_buf(int (*p)[3],int a ...

  8. 【C语言】二维数组作为函数参数传递

    二维数组只能作为函数实参传递 方法一 int in(int a[][j]); in(a); #include<stdio.h> #define i 3 #define j 3//输入二维数 ...

  9. c语言调用二维数组作为函数参数传递,C++ 二维数组作为形参传递使用实例

    在线代码编辑器: http://codepad.org/ 1.*指针 void display(int *arr, const int row, const int col) { for(int i= ...

最新文章

  1. 跟无闻学习GO Web 编程(一) -- go 开发环境搭配(win7 64bit)
  2. 利用shell监控cpu、磁盘、内存使用率
  3. 软件测试矩阵,什么是过程/数据矩阵(U/C矩阵)?
  4. white board and magnet
  5. hyperion高光谱参数_收藏!光纤光谱仪在激光领域的典型应用
  6. jquery自动触发事件
  7. 三场直播丨达梦DM8数据库体系结构、从零快速搭建一整套监控体系、Oracle Database Server经典体系结构...
  8. MultiActionController
  9. php array函数 array_sum 求数组所有值和
  10. Linux命令行打开不了发行光盘RHEL_6.3 i386 Disc 1
  11. 自定义Java规则 Sonar
  12. UmiJS介绍--路由(三)
  13. html 圆圈项目符号,html5 项目符号
  14. 速览 关于网络安全专业学生的未来职业规划
  15. 抢红包算法 c++_“抠抠族”的出行利器,斤斤计较的几何C为了节能果然够拼
  16. Pipes-and-Filters模式
  17. 白骨精写给孙悟空的信
  18. 淘宝店铺pc端代码详细解析
  19. 多个渠道成功销售的秘诀速递
  20. 用C语言对数据或文件内容进行加密

热门文章

  1. shell脚本自理版
  2. python数据类型有哪些、分别有什么用途_python
  3. 基于神经网络的大模型在自然语言处理中的应用
  4. ESP32-C3入门教程 网络 篇(二、 Wi-Fi 配网 — Smart_config方式 和 BlueIF方式)
  5. 在Unity中使用NavMesh导航
  6. ApacheCN 翻译活动进度公告 2019.2.18
  7. 特征选择方法总结(过滤式,包裹式,嵌入式)
  8. pprint python_让我们来谈谈python中的prettyprint和pprint
  9. 独立项目-场景刷怪、小怪AI、主角战斗、小怪死亡-01
  10. foreach 循环获取索引