特定元素个数的数组作为函数入参的两个方法

本文参考了如下链接:http://www.cnblogs.com/graphics/archive/2010/07/15/1777760.html

数组作为入参时,自动被转换为指针。因此数组定义的元素个数的参数无法带入函数。这不符合coder的预期,也是不严格和有风险的coding。

如何解决呢,一种办法是再加一个参数,指定元素个数

void Test(int* a, int n)
{
    for (int i = 0; i < n; ++i)
    {
        cout << a[i] << endl ;
    }
}

另外一种办法是传递数组的引用,本文的重点。

void Test(int (&a)[3])
{
    for (int i = 0; i < 3; ++i)
    {
        cout << a[i] << endl ;
    }
}

这样写数组a就不会被转换为指针了,而且有了元素个数的信息,调用的时候,也必须传递一个含有3个元素的数组

int a[3] = {1, 2, 3} ;
Test(a) ;    // ok

int b[1] = {1} ;
Test(b) ;    // error, can not convert parameter a from int[1] to int(&)[3]
时间: 2024-10-30 10:57:22

特定元素个数的数组作为函数入参的两个方法的相关文章

sizeof对函数入参使用不准

被调用函数内部,无法知道入参的字符数组的可用内存长度 所以函数字符指针作为入参时,一定要加一个 此指针指向的内存空间长度入参int nSize 错误的写法: 1 #include "stdafx.h" 2 #include <string.h> 3 #include <stdarg.h> 4 5 // 返回非0表达式验证不通过,不用调用子系统功能号 6 int getFilters(char * pszInput, char *pszFuncid) 7 { 8

javascript 判断数组中的重复内容的两种方法 by FungLeo

javascript 判断数组中的重复内容的两种方法 by FungLeo 前言 一般,我们可能会给数组去重,这个操作并不复杂,执行一个循环就是了.现在,我要做的是,判断数组中是否有重复的内容,如果有,返回 true 否则,返回 false. 思路 把数组变成字符串 循环原数组,拿每一个字段和这个字符串进行比对,看是否有重复 如何拿A字符串和B字符串进行对比,并且要求判断出B字符串中包含过个A字符串呢? 方法一 indexOf() 和 lastIndexOf() 对比法. 首先,我们构建代码:

php如何向js函数传参的几种方法

在php编程中向js函数传参可以使用$_POST也可使用$_SESSION[' '],也可用echo语句进行输出 <?php echo "<script>test('$_POST[userid]');</script> ";?>在上面的$_POST['']也可适用$_SESSION[' '];<?php $para = "hello boby!"; echo $para; // www.jbxue.comecho "

JavaScript,数组和函数传参 笔记

函数返回值 return  一个函数只有一种返回值 函数传参 可变参,不定参 arguments 提取行间样式 style 提取非行间样式currentstyle  不兼容   getComputedstyle可在不兼容浏览器中使用  在写程序的时候  可用if函数处理兼容问题 在提取非行间样式的时候,复合样式(如:border,backgrund)不可提取,单一样式( height,width)可提取 数组的使用 定义  var arr=[12,5,8,9] var arr=new Array

函数入参使用指针和引用的区别

最近做一个工具,在整改函数时需要给一个全局变量赋值 RadixNode *g_pstRootBase 赋值的来源为已定义的结构体:TreeSet treeSet = {0}中的trSet->tNameSet[i].tName地址(其中i为变量. 以下是trSet结构体的定义: typedef struct tagTreeName{    RadixNode *tName;    char *fName;}TreeName; typedef struct tagTreeSet{    TreeNa

输入10个数,求出最大元素是第几个数(数组作为函数參数)

小结: 调用有參数的函数时,须要提供实參.实參能够是常量.变量.表达式. 数组元素的作用相当于变量. 数组元素能够作为函数实參,其方法与变量同样.向形參传递数组元素的值.数组名也可作为实參和形參,传递的是数组的首地址. 数组元素能够作函数的实參,可是不能作形參. 由于形參是在函数调用时暂时分配存储单元的.不可能为一个数组元素独立分配存储单元(数组是一个总体,在内存中占连续的一段存储单元).在用数组元素作为函数实參时,把实參传递给形參.是"值传递",数据传递方向是从实參传到形參.单向传递

python函数入参和返回值

以下内容参考自runoob网站,以总结python函数知识点,巩固基础知识,特此鸣谢! 原文地址:http://www.runoob.com/python3/python3-function.html 函数格式大体如下def 函数名(参数列表): 函数体 例子: # 计算面积函数 def area(width, height): return width * height 定义一个函数:给了函数一个名称,指定了函数里包含的参数,和代码块结构. 这个函数的基本结构完成以后,不会执行,除非被调用 如

笔试,面试,C/C++,判断单链表是否带环?若带环,求环长度,求环入口点(两种方法)

SListNode* IsRing(SListNode *&pHead) //判断链表是否有环,求相聚点 {  //判空.有.没有  //思路:两个指针从头开始一快(2步)一慢(1步),若最后可以相聚,则链表有环  if (pHead)  {   SListNode *fast = pHead;   SListNode *slow = pHead;   while (fast&&fast->next)   {    fast = fast->next->next;

jQuery事件函数位置放置的两种方法

jQuery 事件函数 jQuery 事件处理方法是 jQuery 中的核心函数. 事件处理程序指的是当 HTML 中发生某些事件时所调用的方法. 通常会把 jQuery 代码放到 <head>部分的事件处理方法中: 实例 1 <html> 2 <head> 3 <script type="text/javascript" src="jquery.js"></script> 4 <script typ