精华内容
下载资源
问答
  • 若函数调用时用数组名作为函数参数
    千次阅读
    2021-02-10 14:09:05

    数组名作为函数参数传递时,会将数组整个传递给目标函数

    int main(){
    	int import(),returnNum;//函数声明
    	//int import(int a[10])亦可
    	int num[10]={1,2,3,4,5};
    	returnNum= import(num);
    	//函数调用,并把返回值赋值给returnNum
    	printf("%d\n",returnNum );
    	return 0;
    }
    
    //函数类型不指定,则默认为int型
    int import(int a[10]){
    	for (int i = 0; i < 10; ++i)
    	{
    		printf("%d\n",a[i] );
    	}
    	return 999;
    }
    
    • 数组名作为函数参数调用,在主调函数与被调用函数中,都应重新定义一次数组
    • 实参数组与形参数组类型应一致
    • 在被调用函数中指定了数组大小,实际上不起任何作用,C语言编译系统并不检查形参数组大小,只是将实参数组的首元素的地址传给形参数组名。形参数组名获得了实参数组的首元素的地址,数组名代表数组的首元素的地址,形参数组首元素和实参数组首元素具有同一地址,它们共占同一存储单元
    • 在内存中,数组是按行存放的

    多维数组名作为函数参数,如一维数组类似

    int main(){
    	int apologize();
    	int a[2][4]={{0,0,0,0},{1,2,3,4}};
    	apologize(a);
    }
    
    int apologize(int a[][4]){
    	printf("%d\n",a[1][0]);//1
    	return 999;
    }
    

    当数组名作为函数参数调用时所进行的传递,是地址的传递,类似于指针

    #include <stdio.h>
    
    int main()
    {
    	int compare(int a[2][3]);
    	int str[2][3]={{0,1,2},{3,4,5}};
    	compare(str);
    	return 0;
    }
    
    int compare(int a[][3]){
    	printf("%d\n",a[1][1] );//输出4
    }
    
    • 需注意一点的是,数组名为常量,不可进行赋值改变地址,指针类型变量,可以不断赋值改变所指向地址常量
    更多相关内容
  • (1)用数组元素作实参,只要数组类型和函数的形参变量的类型一致,那么作为下标变量的数组元素的类型也和函数形参变量的类型是一致的。因此,并不要求函数的形参也是下标变量。换句话说,对数组元素的处理是按...
  • 数组名作为函数参数调用

    千次阅读 2020-03-08 22:12:15
    数组名做形参,只需要数组名就好了; void GetData(int a[],int k); void Sort(int a[],int k); 数组名做实参,需要整个数组,但是不需要指定数组的大小 GetData(a,k); Sort(a,k); 题目: 定义函数GetData()用于...

    数组名做形参时,只需要数组名就好了;
    void GetData(int a[],int k);
    void Sort(int a[],int k);

    数组名做实参时,需要整个数组,但是不需要指定数组的大小
    GetData(a,k);
    Sort(a,k);

    题目:
    定义函数GetData()用于接收键盘输入的一组整形数据,并放入一维数组中;
    另外再定义一个函数Sort()用于对输入的这组数据按照降序排列。
    主函数先后调用GetData和Sort函数,输出最后的排序结果

    C代码:

    #include<stdio.h>
    #define N 80
    void GetData(int a[],int k);
    void Sort(int a[],int k);
    void main()
    {
      int k,a[N]={0};
      printf("请输入数的个数:");
      scanf("%d",&k);  
      GetData(a,k);
      Sort(a,k);
    }
    void GetData(int a[],int k)
    {
      int i,j;
      printf("请输入%d个数:",k);
      for(i=0;i<k;i++)
      {
        scanf("%d",&j);
        a[i]=j;
      }
    }
    void Sort(int a[],int k)
    {
       int i,j,m,t;
       for(i=0;i<k-1;i++)
       {
         t=i;
         for(j=i+1;j<k;j++)
         if(a[j]>a[t])
         t=j;
         if(t!=i)
         {
           m=a[t];
           a[t]=a[i];
           a[i]=m;
         }
       }
       printf("排列后的数为:");
       for(i=0;i<k;i++)
       printf("%-4d",a[i]);
    }
    

    在这里插入图片描述

    心得:我以前都是理解一些概念,现在才深刻体会 ,动手操作真的是一个很好的方式!!!

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

    若用数组名作为函数调用时的实参,则实际上传递给形参的是数组首地址。

    数组首地址数组第一个元素的地址。数组名字本身就是一个指针,它是一个指针常量,指向的地址不变。

    比如定义了一个数组变量,编译器就会在内存中划分了一块地址空间给它,数组名这个指针常量就指向了这块内存空间的首地址,而数组首元素就存在这段内存空间的首地址处,即这段内存空间的首地址跟数组首元素的内存地址是一样的。

    09f5610d0b416e60d98ebc2d36514bb0.png

    扩展资料:

    形参的作用是实现主调函数与被调函数之间的联系,通常将函数所处理的数据,影响函数功能的因素或者函数处理的结果作为形参。

    没有形参的函数在形参表的位置应该写void.main 函数也可以有形参和返回值,其形参也称为命令行参数,由操作系统在启动程序时初始化,其返回值传递给操作系统。

    两者关系:

    在一般传值调用的机制中只能把实参传送给形参,而不能把形参的值反向地传送给实参。因此在函数调用过程中,形参值发生改变,而实参中的值不会变化。而在引用调用的机制当中是将实参引用的地址传递给了形参,所以任何发生在形参上的改变实际上也发生在实参变量上。

    展开全文
  • 函数通过数组作为参数 如果想通过一个一维数组作为函数的参数,就必须声明函数形式参数,使用以下三种方式与所有三个声明方法之一产生类似的结果,因为每一种方式告诉编译器,一个整数指针将会要被接收。类似的方式...
  • 数组作为函数参数函数调用

    万次阅读 2018-11-28 15:04:44
    实参可以是常量变量或者表达式,数组元素就相当于变量,因此数组元素可以用作函数实参,但是不能用作函数形参(因为在函数调用时临时分配存储单元,不可能为一个数组单独分配存储单元数)数组名可以做实参和形参,...

    调用有参函数时需要提供实参,实参可以是常量,变量或者表达式,数组元素就相当于变量,因此数组元素可以用作函数实参,但是不能用作函数形参(因为在函数被调用时临时分配存储单元,不可能为一个数组单独分配存储单元数)数组名可以做实参和形参,但此时传递的是数组第一个元素的地址;

    用一个一维数组内放N个学生的成绩,求平均成绩;
    #include<stdio.h>
    #define N 10
    int main()
    {
    float average(float array[N]); //函数的声明
    float score[10],aver;
    int i;
    printf(“enter 10 scores:\n”);
    for(i=0;i<N;i++)
    scanf("%f",&score[i]);
    printf("\n");
    aver=average(score); //调用average函数
    printf(“average score is %5.2f\n”,aver);
    return 0;
    }

    float average(float array[N]) //定义average函数
    {
    int i;
    float aver,sum=array[0];
    for(i=1;i<N;i++)
    sum=sum+array[i]; //累加学生的成绩
    aver=sum/N; //求N个学生总成绩的平均值
    return(aver); //以aver作为函数的返回值
    }

    注意;
    1.用数组名做函数参数时应在主调函数和北调函数中分别定义数组,如在该程序中array是形参数组名,score是实参数组名,应分别在函数中有定义
    2.由于数组名代表的只是数组首元素的地址因此当实参向形参传递值时 ,形参数组首元素(array【0】)和实参数组首元素(score【0】)具有同一地址,共站同一存储空间,具有相同的值

    欢迎使用Markdown编辑器

    你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

    新的改变

    我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

    1. 全新的界面设计 ,将会带来全新的写作体验;
    2. 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
    3. 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
    4. 全新的 KaTeX数学公式 语法;
    5. 增加了支持甘特图的mermaid语法1 功能;
    6. 增加了 多屏幕编辑 Markdown文章功能;
    7. 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
    8. 增加了 检查列表 功能。

    功能快捷键

    撤销:Ctrl/Command + Z
    重做:Ctrl/Command + Y
    加粗:Ctrl/Command + B
    斜体:Ctrl/Command + I
    标题:Ctrl/Command + Shift + H
    无序列表:Ctrl/Command + Shift + U
    有序列表:Ctrl/Command + Shift + O
    检查列表:Ctrl/Command + Shift + C
    插入代码:Ctrl/Command + Shift + K
    插入链接:Ctrl/Command + Shift + L
    插入图片:Ctrl/Command + Shift + G

    合理的创建标题,有助于目录的生成

    直接输入1次#,并按下space后,将生成1级标题。
    输入2次#,并按下space后,将生成2级标题。
    以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。

    如何改变文本的样式

    强调文本 强调文本

    加粗文本 加粗文本

    标记文本

    删除文本

    引用文本

    H2O is是液体。

    210 运算结果是 1024.

    插入链接与图片

    链接: link.

    图片: Alt

    带尺寸的图片: Alt

    当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

    如何插入一段漂亮的代码片

    博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

    // An highlighted block
    var foo = 'bar';
    

    生成一个适合你的列表

    • 项目
      • 项目
        • 项目
    1. 项目1
    2. 项目2
    3. 项目3
    • 计划任务
    • 完成任务

    创建一个表格

    一个简单的表格是这么创建的:

    项目Value
    电脑$1600
    手机$12
    导管$1

    设定内容居中、居左、居右

    使用:---------:居中
    使用:----------居左
    使用----------:居右

    第一列第二列第三列
    第一列文本居中第二列文本居右第三列文本居左

    SmartyPants

    SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

    TYPEASCIIHTML
    Single backticks'Isn't this fun?'‘Isn’t this fun?’
    Quotes"Isn't this fun?"“Isn’t this fun?”
    Dashes-- is en-dash, --- is em-dash– is en-dash, — is em-dash

    创建一个自定义列表

    Markdown
    Text-to- HTML conversion tool
    Authors
    John
    Luke

    如何创建一个注脚

    一个具有注脚的文本。2

    注释也是必不可少的

    Markdown将文本转换为 HTML

    KaTeX数学公式

    您可以使用渲染LaTeX数学表达式 KaTeX:

    Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n1)!nN 是通过欧拉积分

    Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t &ThinSpace; . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=0tz1etdt.

    你可以找到更多关于的信息 LaTeX 数学表达式here.

    新的甘特图功能,丰富你的文章

    Mon 06 Mon 13 Mon 20 已完成 进行中 计划一 计划二 现有任务 Adding GANTT diagram functionality to mermaid
    • 关于 甘特图 语法,参考 这儿,

    UML 图表

    可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图::

    张三 李四 王五 你好!李四, 最近怎么样? 你最近怎么样,王五? 我很好,谢谢! 我很好,谢谢! 李四想了很长时间, 文字太长了 不适合放在一行. 打量着王五... 很好... 王五, 你怎么样? 张三 李四 王五

    这将产生一个流程图。:

    链接
    长方形
    圆角长方形
    菱形
    • 关于 Mermaid 语法,参考 这儿,

    FLowchart流程图

    我们依旧会支持flowchart的流程图:

    Created with Raphaël 2.2.0 开始 我的操作 确认? 结束 yes no
    • 关于 Flowchart流程图 语法,参考 这儿.

    导出与导入

    导出

    如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

    导入

    如果你想加载一篇你写过的.md文件或者.html文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
    继续你的创作。


    1. mermaid语法说明 ↩︎

    2. 注脚的解释 ↩︎

    展开全文
  • 数组元素作为函数的实参,像形参变量传递的是数组元素的值,而用数组名作为函数的实参,向形参(数组名或指针变量)传递的是数组首元素地址.参考如下代码可以更好的理解. 1数组名作为函数参数 //1有一个一...
  • c语言中经常需要通过函数传递二维数组,有三种方法可以实现,如下: 方法一, 形参给出第二维的长度。 例如: #include void func(int n, char str[ ][5] ) { int i; for(i = 0; i < n; i++) printf("/nstr...
  • 数组作为函数参数调用

    千次阅读 2021-10-15 14:40:41
    数组作为参数函数中被调用的写法
  • C语言函数调用二维数组,指针问题

    千次阅读 2021-05-25 04:35:44
    话题:C语言函数调用二维数组,指针问题回答:正如楼下所言 int **p ,定义的p是一个指向int*型的指针int (*p)[1]是一个指向数组的指针 数度为1假如定义成 deal(int **p),传参数时要加类型转换: deal((int**)a);...
  • 数组作为函数参数时函数调用

    千次阅读 2021-02-02 19:01:41
    将一个数组作为实际参数传递给函数,只需不带方括号的数组名即可 若数组a的定义为:int a[10]; 要将数组a作为实参传递给被调用函数SumArr(), 则调用语句可写成:SumArr(a,10);
  • 数组名作为参数传递给函数

    千次阅读 2020-03-24 11:11:57
    C语言中,定义数组后可以sizeof命令获得数组的长度(可容纳元素个数),例如 sizoef(arr)/sizeof(arr[0]) ,即数组占用总字节/类型的字节数。如: int main(){ int arr[] = {1,2,3,4,5,6}; printf("main()得出...
  • 函数调用数组作为参数

    千次阅读 2019-12-09 20:24:47
    //调用max1函数 return 0 ; } void max1 ( double b [ 10 ] ) //形参 { double max = b [ 0 ] ; int j = 0 , n ; //这里是将b[0]提前拿出来,要不第一个无法比较。 for ( n = 1 ; n 9 ...
  • //数组作为参数传递,形参有两种: //1. 数组形式 //2. 指针形式 //数组形式: void test1(int array) { } //二维数组作为参数传递,行可以没有元素,列一定要有元素 void test2(char array[][4]) { } // ...
  • 用数组名作函数参数

    千次阅读 多人点赞 2019-05-31 18:46:10
    关于用数组名作函数参数有两点要说明: (1) 如果函数实参是数组名,形参也应为数组名(或指针变量),形参不能声明...因此用数组名作函数实参,不是把实参数组的值传递给形参,而只是将实参数组首元素的地址传递给形参。...
  • 1、数组元素(下标变量)作为实参使用数组元素作为函数实参使用与普通变量是完全相同的,在发生函数调用时,把作为实参的数组元素的值传给形参,只是“拷贝”实参中的变量的值,传送给形参,实现单向的值传送数组元素...
  • 数组函数参数时使用

    千次阅读 2020-12-06 21:10:39
    函数需要将数组作为参数传入,数组是传址调用,即将数组作为实参,传入的其实是数组的首地址,实质上是一个指针。 在定义函数时可以定义一个指针,然后去调用数组,此时在函数内部的操作会直接修改数组的实际...
  • C语言之调用函数传递二维数组

    千次阅读 2021-05-21 09:25:08
    转置二维数组的实例代码,探究二维数组作为参数的传递问题#include#define N 3int array[N][N];void main(){//在主函数内声明被调函数void convert(int array[][3]);int i,j;printf("输入数组:\n");for(j=0;jfor(i=0...
  • 在C++中用函数调用二维数组

    千次阅读 2019-11-09 10:55:45
    用函数调用二维数组 #include #include using namespace std; void fun(int a[3][3]); int main() {  int b[3][3] = {1,1,1,2,2,2,3,3,3};  fun(b); } void fun(int a[3][3]) {  int i,j;  for ...
  • 数组名作为函数参数

    2014-04-29 22:44:20
    数组作为函数参数时
  • 数组数组是用于存储多个相同的数据类型的一片连续的内存空间,其数组名代表这段空间的首地址 指针:指针也是一个变量,但是与别的变量不一样,它存放的是另...既然说数组名就是数组的首地址,那么数组在传地址的.
  • C++数组作为函数参数

    2021-09-08 17:27:06
    1.数组元素作为函数参数————值传递形式 #include <iostream> using namespace std; int func(int n); int main() { int a[5] = { 1,5,7,9,17 }; cout << "数组元素作为函数实参进行传递后的...
  • C++ 不允许返回一个完整的数组作为函数参数。但是,您可以通过指定不带索引的数组名来返回一个指向数组的指针。 如果您想要从函数返回一个一维数组,您必须声明一个返回指针的函数,如下: int * myFunction() { ...
  • C语言/C++ 数组作为函数参数

    千次阅读 2021-05-19 08:14:22
    前几天帮别人解决数组拼接问题(类似字符串拼接)想到这个专题。因为她的代码太糟糕。我们知道C、C++中的数组是没有拷贝(复制)运算的,除非编译器支持。因为C语言发明的初衷是替换汇编语言,要知道你不同指令集的...
  • 参数列表为数组和数组的大小,arry[]表示传递的是个指向数组首地址的指针,但同时它还指向数组的第一个元素 void PrintArray(int arry[], int n) { for (int i = 0; i < n; i++) cout << arry[i] <...
  • 二维数组作为函数参数进行传值,调用使用

    千次阅读 多人点赞 2019-09-06 16:00:26
    一、 情况1:实参为二维数组 在main函数中 int a[3][3]; 调用形式 print(a);...当调用形式为 print( (int **) a),这种定义,对应int a[3][3]没有问题OK; void print(int* a[3]); //ERROR;这...
  • 首先是数组元素作为函数的实参,这和直接多个变量作为函数的实参在用法上没有什么差别。 作为例子的代码: 代码如下:#include<iostream>using namespace ...然后,是用数组名作为函数参数数组名其实代表的是数组

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,301,059
精华内容 520,423
关键字:

若函数调用时用数组名作为函数参数