数组用作函数参数有两种形式:

一种是把数组元素(下标变量)作为实参使用;

一种是把数组名作为函数的形参和实参使用。

1、数组元素(下标变量)作为实参使用

数组元素作为函数实参使用与普通变量是完全相同的,在发生函数调用时,把作为实参的数组元素的值传给形参,只是“拷贝”实参中的变量的值,传送给形参,实现单向的值传送

数组元素作为函数实参的值传递过程

2、数组名作为函数参数

用数组名作为函数参数与用数组元素作实参有几点不同:

1)用数组元素作函数参数不要求形参也必须是数组,但是用数组名作函数参数时,则要求形参和相对应的实参都是类型相同的数组。

2)在 C 语言中,数组名除作为变量的标识符之外,数组名还代表了该数组在内存中的起始地址,当数组名作函数参数时,实参与形参之间不是“值传递”,而是“地址传递”,实参数组名将该数组的其实地址传给形参数组,两个数组共享一段内存单元,编译系统不再为形参数组分配存储单元。

3)在变量做函数参数时,所进行的值传递是单向的。即只能从实参传向形参,不能从形参传回实参。

3、数组名作为函数参数注意事项

1)形参数组和实参数组类型必须一致,否则出错。

2)在函数形参表中,允许不给出形参数组的长度,或用一个变量来表示数组元素的个数。void xzh(int a[])

或写为:void xzh(int a[],int n)

n 的值由主调函数的实参进行传递。

所有的地址都占8个字节。

3)形参数组和实参数组长度可以不相同,因为在调用时,只传递首地址而不检查形参数组的长度。

c语言数组名做函数的参数传递,【C 语言】数组元素和数组名作为函数参数相关推荐

  1. C++数组名做函数形参/指针

    数组名做函数形参 数组未开辟空间时 #include <iostream> using namespace std; void test(int* a) {*a = 0;*(a+1) = ...

  2. 二维数组名做参数传递问题

    在用二维数组名作为参数传递时容易出现Segmention Error.这是因为不能正确为二维数组中元素寻址的问题,正确的方法如下: 1. 用指向一维数组的指针变量,如下例子所示: #include & ...

  3. 在c语言程序中,数组名做函数调用的实参时,传递给形参的是,若用数组名作为函数调用时的实参,则实际上传递给的形参的是(C)...

    若用数组名作为函数调用时的实参,则实际上传递给形参的是数组首地址. 数组首地址数组第一个元素的地址.数组名字本身就是一个指针,它是一个指针常量,指向的地址不变. 比如定义了一个数组变量,编译器就会在内 ...

  4. 自定义数组名做参数(传指针教学)

    描述 读入整数N,再读入N个整数存入数组,排序后输出.对数组排序请使用函数实现(冒泡法):void bubble_sort(int *a,int n) . 输入输出示例 输入 输出 示例 1 10 7 ...

  5. c语言变量名由啥组成,一个c语言是由什么构成

    大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. 一个C语言由数据类型.常量与变量.数组.指针.字符串.文件输入或者输出构成.C语言是一门面向过程的计算机编程语言,C语言的设计目标 ...

  6. c语言中数组名可以与其他变量名相同,C语言初学者入门讲座 第九讲 数组(1)...

    C语言初学者入门讲座 第九讲 数组(1) (2007-01-17 11:39:19) 数组在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来.这些按序排列的同类数据元素的集合称为 ...

  7. c语言中的下标变量是什么,c语言引用数组元素时其数组下标的允许的数据类型是什么...

    c语言引用数组元素时其数组下标的允许的数据类型是什么 发布时间:2020-07-30 11:56:52 来源:亿速云 阅读:621 作者:Leah c语言引用数组元素时其数组下标的允许的数据类型是什么 ...

  8. C语言基础10——指针进阶。字符指针、指针数组、数组指针、函数指针、函数指针数组、回调函数、数组名详解、杨氏矩阵、字符串旋转

    目录 字符指针 指针数组 数组指针 数组传参.指针参数 函数指针 函数指针数组 指向函数指针数组的指针 回调函数 练习 数组名的意义 指针笔试题 字符指针 字符指针的另一种使用方式 #include ...

  9. 从编译器角度分析C语言中数组名和指针的区别

    从编译器角度分析C语言中数组名和指针的区别 数组名和指针是两个往往很容易让人们混淆的概念,很多人以为数组名就是一个指针,也有很多人知道数组名不同于指针但是仅知道数组名的值不能像指针一样改变. 例如你可 ...

最新文章

  1. 多视角图像生成--Multi-View Image Generation from a Single-View
  2. 遗传算法解决旅行商问题(TSP)
  3. VTS工具测试指定的testcase函数(以VtsHalKeymasterV4_0TargetTest为例)
  4. optee的共享内存的介绍
  5. Linux采用存储管理方式,19.Linux采用( A )存储管理方式。
  6. 面向对象方法使用gluon
  7. java jpa 教程 查询_Spring Boot JPA 使用教程
  8. 北大学子求职经历与建议(IT类) 收藏
  9. Linux 关于vmlinux和vmlinuz
  10. UNIX 环境高级编程之我见
  11. 台式计算机怎么关闭无线网络,台式机无线网卡被禁用了如何解决
  12. QListview获取Item内容变化信号及内容
  13. 笔记本创建wifi热点
  14. C语言打印平行四边形
  15. 【JavaScript】数组方法应用自测例题
  16. c51单片机时钟c语言程序设计,51单片机C编程(六、定时器时钟显示时分秒)
  17. Python输出1000以内质数代码
  18. DCMTK读取dicom图像
  19. H265编码视频播放器EasyPlayer.JS控制台出现VideoJS:WARN警告信息是什么原因?
  20. 精读《Spring 概念》

热门文章

  1. C++11 左值、右值、右值引用详解
  2. 【交通标志识别】基于BP神经网络实现交通标志识别系统(含语音报警)附matlab代码
  3. vue报错:If you want to include a polyfii,you can use an empty module like this:resolve.fallback
  4. Flutter+FCM开发推送功能
  5. 利用C语言打印9*9乘法表
  6. java eclipse给参数_java eclipse 启动参数
  7. 安卓平台及windows平台上基于Gazebo仿真器的px4遥控控制
  8. Mac打开matlab提示:Warning: the font “Times” is not available……
  9. 一个263企业邮箱白名单的处理
  10. 在MSCOCO的test-dev数据集上测试过程(如何在MSCOCO服务器上提交测试结果)