数组形参 您所在的位置:网站首页 在函数中用形参定义一个数组 数组形参

数组形参

2024-06-02 09:50| 来源: 网络整理| 查看: 265

数组的两个特殊性质对我们定义和使用作用在数组上的函数有影响,这两个性质分别是:不允许拷贝数组以及使用数组时(通常)会将其转换成指针。因为不能拷贝数组,所以我们无法以值传递的方式使用数组参数。因为数组会被转换成指针,所以当我们为函数传递一个数组时,实际上传递的是指向数组首元素的指针。

尽管不能以值传递的方式传递数组,但是我们可以把形参写成类似数组的形式:

//尽管形式不同,但这三个print函数时等价的

//每个函数都有一个const int*类型的形参

void print(const int *) ;

void print(const int[]);//可以看出,函数的意图是作用于一个数组

void print(const int[10]); //这里的维度表示我们期望数组含有多少元素,实际上不一定

尽管表现形式不同,但上面的三个函数时等价的:每个函数的唯一形参都是const int*类型的。当编译器处理对print函数的调用时,只检查传入的参数是否是const int*类型:

int i=0,j[2]={0,1};

print(&i);   //正确:&i的类型是int *

print(j);   //正确:j转换成int*并指向j[0]

如果我们传给print函数的是一个数组,则实参自动地转换成指向数组首元素的指针,数组的大小对函数的调用没有影响。

 

因为数组是以指针的形式传递给函数的,所以一开始函数并不知道数组的确切尺寸,调用者应该为此提供一些额外的信息。管理指针形参有三种常用的技术。

 

使用标记指定数组长度

管理数组实参的第一种方法是要求数组本身包含一个结束标记,使用这种方法的典型示例是C风格字符串。C风格字符串存储在字符数组中,并且在最后一个字符后面跟着一个空字符。函数在处理C风格字符串时遇到空字符停止:

void print(const char * cp)

{

  if(cp)

    while(*cp)

      cout



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有