C语言多维数组做函数参数会退化,数组做函数参数退化问题
一、数组做函数参数退化问题
数组做函数参数时,会退化为指针。
1、把数组的内存首地址和数组的有效长度传入函数。
2、实参数组和函数参数数组的数据类型不一样。形参中的数组,编译器会把它当做一个指针处理,这是C语音的特色
3、形参写在函数形参位置和写在函数内是一样的、
二、实验代码(排序)
#include
int sort(int a[], int num)
{
int tmp,i,j;
for (i = 0; i < num; i++)
{
for (j=i+1;j
{
if (a[i] > a[j])
{
tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
}
}
return 0;
}
int display(int a[], int num)
{
int i;
for (i=0;i
{
printf("%d ",a[i]);
}
printf("\n");
return 0;
}
int main()
{
int a[7] = {12,1,3,34,27,13,97};
int num;
num = sizeof(a) / sizeof(a[0]);
display(a,num);
sort(a,num);
display(a, num);
system("pause");
return 0;
}
这里函数参数传入的a只是main函数数组a的首地址,必须再传入数组的有效长度,才能正常使用。
C语言多维数组做函数参数会退化,数组做函数参数退化问题相关推荐
- C语言 二维数组做函数参数的几种情况
(1) 实参为数组元素地址,虚参为元素类型指针 (a) 调用函数:fun(*a,3*4); //*a也可为a[0] or &a[0][0] 函数: fun(int * ...
- C语言 二维数组作为函数参数的4种方式
前言 多维数组中,二维数组是最常用的一种.在C语言编程中,二维数组的定义.取值以及赋值都比较容易,与一维数组类似.然而,在将二维数组作为函数参数传递时,参数结构较复杂,难以理解.本文章是实用型文章,注 ...
- C语言二维数组作为函数参数的使用
c语言中经常需要通过函数传递二维数组,有三种方法可以实现,如下: 方法一, 形参给出第二维的长度. #include <stdio.h> void func(int n, char str ...
- C语言 | 二维数组作为函数参数
1024G 嵌入式资源大放送!包括但不限于C/C++.单片机.Linux等.关注微信公众号[嵌入式大杂烩],回复1024,即可免费获取! 偶然间发现C语言二维数组作为函数的参数是个比较容易出错的问题. ...
- C语言学习笔记11-结构体(struct、结构作为函数参数、结构数组)、联合体/共用体typedef; union(大、小端序)
C语言-结构类型 程序中的数据都需要有类型支撑,当数据很复杂时(不是简单的一个值,如时间信息:年月日时分秒6个数据需要作为一个整体),我们需要声明一个新的结构类型来描述这种复合的数据(可以包含很多不同 ...
- c语言程序设计歌手大奖赛,C语言二维数组怎么做:设计青年歌手参加歌曲大奖赛计分系统: 共...,怎样用c语言程序设计? 青年歌手参加歌曲大奖赛,有10个评委...
导航:网站首页 > C语言二维数组怎么做:设计青年歌手参加歌曲大奖赛计分系统: 共...,怎样用c语言程序设计? 青年歌手参加歌曲大奖赛,有10个评委 C语言二维数组怎么做:设计青年歌手参加歌曲 ...
- 前端:JS/22/函数(函数的概念,函数的定义格式,函数定义格式的说明,函数的调用,函数的参数),全局变量和局部变量,拷贝传值和引用传址,匿名函数,二维数组,对象,自定义对象的创建
函数 1,函数的概念 函数,是将一段公共的代码进行封装,给它起个名字叫"函数" 函数可以一次定义,多次调用:函数可以将常用的功能代码,进行封装,如:用户名的验证,验证码函数,邮箱验 ...
- c语言参数列表定义一个三维数组,C语言多维数组
C语言多维数组教程 一般我们使用最多的就是二维数组,很少用到三维数组,更多维的数组几乎更用不到. C语言二维数组详解 定义 C 语言的二维数组,就是数组的每一个元素都是一个一维数组. 语法 type ...
- vector做函数参数和普通数组做函数参数有什么区别
结论: 1,vector做函数参数,当vector参数做输出(vector数组需要在函数中被改变)的时候,需要传入vector的引用. 2,vector做函数参数,当vector参数做输入参数(只使用 ...
最新文章
- 收藏 | 图解Transformer:Attention Is All You Need
- 机器人流程自动化(RPA)系统原理及特点
- org/springframework/core/MethodClassKey
- 记事本中写c/c++程序在Windows下执行
- CentOS常用环境配置(MySQL、jdk、Redis、Nginx)
- Flask 蓝图,数据库链接
- IOS – OPenGL ES 调节图像饱和度 GPUImageSaturationFilter
- 混凝土静力受压弹性模量试验计算公式_【小马建考干货】天天送检,你知道混凝土试块检测哪些性能标指吗?...
- 【kafka】Kafka消费者分区分配策略详解
- B站项目资源过于敏感,稍后删,抓紧保存!!!
- Ext.Net学习笔记20:Ext.Net FormPanel 复杂用法
- s查看oracle空间分配,Oracle查看表空间使用率(包括临时表空间)
- SSh三大框架工作原理介绍
- Visual Studio 2010下载 + 附破解方法
- 计算n阶行列式的C语言实现
- ssm药品大全网站的设计与实现毕业设计源码281128
- ***cgy学长爱吃糖果***
- 如何申请芬兰居留许可(留学)
- 结构化写作2—— 构思写作框架
- impala的shell命令使用
热门文章
- Simpsons’ Hidden Talents——kmp入门
- python股票量化投资课程 百度云_网易云课堂 Python股票量化投资课程|百度云|天翼云|GD|OD下载...
- LaTeX公式编辑教程
- 【小程序】websocket实现“谁是卧底”在线随机发牌
- 我做了一个Python Bot,可以解决任何给定图像中的多项选择问题。 码]
- 一个研三女人想告诉后辈的事!
- 面试时总有恐惧感要如何有效消除呢
- 游戏行业回暖,但距离春天还有一段距离
- 1-1 medium vs. modality笔记
- 《超时空要塞》与《太空堡垒》之缘——同样伟大的硬币两面