废话不多说,先上错误示范:

void fun(int arr[arr_num]) {

  // ...

}

int main() {

  // ...

  int *arr = new int[10];

  fun(arr)

  // ...

  return 0;

}

很多人向函数传递数组时,都想要也把数组大小传递进去方便操作,虽然上边的方法看起来比较顺眼,但是是错误的,arr_num起不到任何作用,也就是说不管你传进去的数组为多大,都不会报错。

正确的做法如下:

方法一:

把数组大小当作另外一个参数传进去

void fun(int *arr, int arr_num) {

  // ...

}

方法二:

void fun(int (&arr)[arr_num]) {

  // ...

}

经检验,这种方式也存在报错的时候:

1、当传递的参数不为指针时,此方法正确,即:

int arr[10] = {0};

fun(arr);

2、当传递的参数为指针时,此方法报错,即:

int *arr = new int[10];

fun(arr);

综上所述,还是第一种方法比较稳妥,多一个参数也没什么大不了的呵呵

C++ 数组作为函数参数时,传递数组大小的方法的更多相关文章

  1. C语言 数组做函数参数不传数组个数的遍历方法

    //数组做函数参数不传数组个数的遍历方法 #include<stdio.h> #include<stdlib.h> #include<string.h> void ...

  2. golang中数组指针和指针数组当做函数参数如何修改数组中的值

    先理解:数组指针它的类型时指针,指针数组它的类型时数组 1. 数组指针当做函数的参数 package main import "fmt" func changeData(dataA ...

  3. C语言中将二维数组作为函数参数来传递

    c语言中经常需要通过函数传递二维数组,有三种方法可以实现,如下: 方法一, 形参给出第二维的长度. 例如: #include <stdio.h> void func(int n, char ...

  4. ​C语言数组作为函数参数

    数组可以作为函数的参数使用,进行数据传送. 数组用作函数参数有两种形式,一种是把数组元素(下标变量)作为实参使用:另一种是把数组名作为函数的形参和实参使用. 数组元素作函数实参 数组元素就是下标变量, ...

  5. [C++程序设计]用数组名作函数参数

    1. 用数组元素作函数实参 #include <iostream> using namespace std; int max_value(int x, int max) { return ...

  6. Summary: Java中函数参数的传递

    函数调用参数传递类型(java)的用法介绍. java方法中传值和传引用的问题是个基本问题,但是也有很多人一时弄不清. (一)基本数据类型:传值,方法不会改变实参的值. public class Te ...

  7. C++数组作为函数参数的几个问题(转)

    本文需要解决C++中关于数组的2个问题:1. 数组作为函数参数,传值还是传址?2. 函数参数中的数组元素个数能否确定? 先看下面的代码. #include <iostream> using ...

  8. C++中二维数组作为函数参数

    在平时,我们经常会遇到将整个数组作为函数参数的情况,一维数组的情况,就是用数组名当形参和实参,传递的是数组的首地址.二维数组我们用的也很多,但是总是有各种问题,今天我总结一下 有个很重要的一点,字符串 ...

  9. C语言 数组做函数参数退化为指针的技术推演

    //数组做函数参数退化为指针的技术推演 #include<stdio.h> #include<stdlib.h> #include<string.h> //一维数组 ...

随机推荐

  1. Delphi文件映射

    http://www.cnblogs.com/key-ok/p/3429860.htmlhttp://www.cnblogs.com/key-ok/p/3380793.htmlhttp://www.c ...

  2. Android Wear开发 - 数据通讯 - 第四节 : 数据封装(解决不能序列化问题)

    一. 前言 背景 一开始笔者在研究数据发送与接收的时候,看到Wear数据类DataMap除了可以put基本类型外,还有个fromBundle方法来构建一个DataMap对象.所以一口气的将原本功能上的 ...

  3. 用 SQL 脚本读取Excel 中的sheet数量及名称

    -- Get table (worksheet) or column (field) listings from an excel spreadsheet -- 设置变量 declare @linke ...

  4. border粗细不一

    devicePixelRatio = 1.5 引发的问题

  5. 《精通CSS:高级Web标准解决方案》学习笔记(上)

    鉴于国产CSS书籍基本都是辣鸡的现状,我在半年前动用某工作室的购书资金采购了一些技术书籍,这本广受好评的<精通CSS>也在其中.但是在阅读过后我深深的感觉到,如果说CSS本来已经是一种很琐 ...

  6. bzoj 1010 [HNOI2008]玩具装箱toy(DP的斜率优化)

    1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 7874  Solved: 3047[Submit][St ...

  7. 第一节:Scrapy开源框架初探

       Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中.  具体开发流程如下:   一.确定待抓取网站 当您需要从某 ...

  8. Git配置和一些常用命令

    Git:常用命令.... git clone <repo> git config –list git diff –staged add后,commit前的撤销:git rm –cached ...

  9. select默认选择的实现方法

    <script type="text/javascript"> <!-- document.biao.bbb.value = "云南";//b ...

  10. [PWA] 14. Loop cursor

    import idb from 'idb'; var dbPromise = idb.open('test-db', 4, function (upgradeDb) { switch (upgrade ...