[整理]函数的声明中的数组参数

在函数的声明的数组参数中,并为指明数组的长度。因为在C中,允许单个函数操纵任意长度的一维数组。这个特性不利的一面是函数没法知道该数组的长度。如果确实需要知道数组的长度,必须作为一个单独的参数传递给函数。

当数组名作为实参时,传递给函数的实际上是一个指向数组起始位置的指针。

/*开发环境:vs2010 window xp sp3*/
#include <stdio.h>

int main(void)
{
    void array_len(int v[]);
    int v[]= { 70, 30, 40, 60, 10, 20, 50, 100, 80, 90 };
    int len;

    array_len(v);

    len=sizeof(v)/sizeof(int);//40/4=10, sizeof(v)返回的是一维数组的元素总共所占的自己数10*4
    printf("%d\n",len);    //10

    return 0;
}

void array_len(int v[]){
    int len=sizeof(v)/sizeof(int);//4/4=1,sizeof(v)返回的是int *p 指针的长度,为4个字节
    printf("%d\n",len);    //1
}

以上int改成long也是一样的结果。

需要注意的的是:
指针和long int 占据的是一样的,代表了这个平台的字宽,即机器的最大寻址宽度,32位就是4字节。

[整理]函数的声明中的数组参数

时间: 2024-10-09 00:15:19

[整理]函数的声明中的数组参数的相关文章

C/C++中传递数组参数的问题

我真是太菜了,本来我是今天打算好好搞搞dynamic_programming一系列的经典问题,结果只是停留在把数组连乘的原理给看懂了而已. 原因嘛: 1.当我想要动手实现时,为了给函数和变量起个专业点儿的名字,特意去看了一些细节的命名规范问题: 2.呦西,命名规范解决了,但是名字怎么取才能看起来逼格高一些呢,不是说好的代码不需要注释,只看命名就行了么.然后我发现我想表达的变量名字对应的单词我不会,于是我又去查单词了: 3.呦西+1,命名总算搞定了,但是这个参考代码里面,传递参数为什么用vecto

七十、shell中的函数、shell中的数组、告警系统需求分析

一.shell中的函数 函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段代码时直接调用这个小单元的名字即可.函数就是一个子shell,一个代码段. shell中的函数必须要定义在脚本的最上面. 格式: function f_name() { command }函数必须要放在最前面 f_name:函数名,最好不要和shell中的一些关键词冲突,比如for. command:具体命令 function这个单词可以省略掉的. 示例1 #!//bin/bash functio

shell脚本中的函数,shell中的数组,shell项目-告警系统

shell脚本中的函数 函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段代码时直接调用这个小单元的名字即可. 格式: function f_name() {command }函数必须要放在最前面,function可以省略直接写函数名 示列1,打印shell的参数 [[email protected] shell]# cat fun1.sh #!/bin/bash function inp(){ echo "the first par is $1" echo

【前端】vue项目 url中传递数组参数

[问题情景] 我在项目中使用了一个iframe,引入另一个项目,想通过动态修改iframe的src使iframe中的页面动态展示,在这个过程中,我碰到了一个问题,就是我往url传递数组参数的时候,接受到的是[object object],这使我读不出我传递的参数.但是我百度谷歌了一把,都没有找到很好的解决方案.下面附上我的解决方案. [解决方案] 传递参数的页面 let testArray = [{a:1},{b:2},{c:3}]; let testStr = encodeURICompone

shell中的函数、shell中的数组、告警系统需求分析

20.16-20.17 shell中的函数 函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段代码时直接调用这个小单元的名字即可. 格式: function f_name() { command } 函数必须要放在最前面 脚本实例1 #!/bin/bash function inp(){ echo $1 $2 $3 $0 $# } inp 1 a 2 脚本实例2 #!/bin/bash sum() { s=$[$1+$2] echo $s } sum 1 2 脚本实例3

Shell脚本(函数,shell中的数组)

函数 函数就是把一段代码整理到一个小单元中,并给这个小单元起一个名字,当用到这段代码时直接调用这个小单元的名字即可. 格式:function f_name(){ command } 函数必须放在最前面,函数名可以自己定义. 案例一: [[email protected] shell]# vim fun.sh #!/bin/bash function inp() { echo $1 $2 $3 $10 ${10} ${11} $0 $# [$*] } inp 1 2 3 4 5 6 7 8 9 3

数组原型方法调用及函数apply调用时 类数组参数在IE8下的问题

当函数以 apply 方式调用时, 传参方式是一个由各个参数组成的数组或类数组(一个有length属性的对象),传入参数个数取决于 length 的值,例如,某个对象 args.length=3; apply 会将 args[0],args[1],args[2] 三个参数传入,如果对应的值不存在则传入了undefined. 例如: function f(a,b,c){ console.log(a,b,c);} f.apply(null,{0:123,1:456,2:789,length:2});

在业务控制方法中收集数组参数

@Controller @RequestMapping(value="/user") public class UserAction { @RequestMapping(value="/delete") public String deleteMethod(int[] ids,Model model) throws Exception{ System.out.println("UserAction::deleteMethod()"); Syste

函数声明和函数定义中的默认参数浅析

默认参数是存在于函数的声明中,还是函数的定义中呢? 我在VS6.0和VS2008下做了如下实验,并做出了简单的总结,有不足或者不准确的地方,欢迎大家拍砖,我会及时修正相关内容. 实验一:默认参数不能同时存在于函数声明和函数定义中. #include <iostream> #include <tchar.h> using namespace std; void SetHeight(double dHeight = 183.5); int _tmain(int argc, TCHAR*