精华内容
下载资源
问答
  • 形参的存储单元是动态分配的
    千次阅读
    2020-12-24 22:28:59

    展开全部

    C。

    函数的形参是函数定义时由用户定义的形式上的变量,实参32313133353236313431303231363533e78988e69d8331333431353433是函数调用时,主调函数;被调函数提供的原始数据。

    形参变量只有在被调用时才分配内存单元,在调用结束时, 即刻释放所分配的内存单元。因此,形参只有在函数内部有效。 函数调用结束返回主调函数后则不能再使用该形参变量。 实参和其所对应的形参分别占用不同的存储单元,彼此之间不影响。

    扩展资料:

    形参和实参的特点

    1、形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量。

    2、实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值。

    3、实参和形参在数量上,类型上、顺序上应严格一致,否则就会发生类型不匹配的错误。

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

    参考资料:

    更多相关内容
  • C语言中函数的形参与实参是什么?

    千次阅读 2021-03-07 18:29:35
    函数的参数分为形参和实参两种形参出现:1、在函数定义中,在整个函数体内都可以使用,离开该函数则不能使用。2、实参出现在主调函数... 形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存...

    函数的参数分为形参和实参两种形参出现:

    1、在函数定义中,在整个函数体内都可以使用,离开该函数则不能使用。

    2、实参出现在主调函数中,进入被调函数后,实参变量也不能使用。

    数据传送是形参和实参的主要功能。在发生函数调用时,主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送。

    368d68cde7a22aa3993e69c9b3531bf9.png

    函数的形参和实参具有以下特点:

    1. 形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只有在函数内部有效。函数调用结束返回主调函数后则不能再使用该形参变量。

    2. 实参是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使实参获得确定值。

    3. 实参和形参在数量上,类型上,顺序上应严格一致,否则会发生类型不匹配”的错误。

    4. 函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。 因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。

    形式参数就是定义函数时候的参数表,只是定义了调用时参数的个数、类型和用来引用的名字,并没有具体的内容。形参未被调用时,不占存储单元。形参只在调用过程中占用存储单元。

    在调用函数时,给形参分配存储单元,实参不仅是常量、变量或者表达式,且要与形参类型一致!而且实参要有确定的值,在调用过程中实参将值赋给形参,并将实际参数对应的数值传递给形式参数;

    当调用结束后,形参单元被释放,实参单元仍然保留 并且维持原值。所以说,实参是调用函数传递的具体数据。实参对形参数据传递时时单向传递。在存储单元中是不同的单元。

    f0fa0ec04dbf5b053c6e04e0ff6c5ea1.png

    下面这段程序中的 a 和 b 都是形式参数,x和y都是实际参数

    #includeint fun(int a,int b){a+=10; b=a+b*2;return a+b;}void main(){int x=3,y=5,z;z=fun(x,y);printf("%d %d %d ",x,y,z);}

    程序从主函数开始运行,等到运行到z=fun(x,y)开始调用被调用函数,以被调用函数的形式进行运算,然后把计算的值返回后赋值给z,这样一个运算就算完成了。在调用过程中,形参a和b的值都发生了改变,但是在main函数中,x和y的值都未发生变化。所以说实参向形参的值的传递是单向的。

    以上便是小编对“C语言中函数的形参与实参是什么?”的大致介绍,希望对您有所帮助!

    展开全文
  • 实参和与其对应的形参各占用独立的存储单元关注:90答案:6mip版解决时间 2021-01-27 22:41提问者花开不败2021-01-26 22:07B.实参和与其对应的形参共占用一个存储单元C.只有当实参和与其对应的形参同名时才共占用...

    以下正确的说法是( )。在C语言中: A.实参和与其对应的形参各占用独立的存储单元

    关注:90  答案:6  mip版

    解决时间 2021-01-27 22:41

    e6cb1a03ad541b3098697807b7bf1798.png

    提问者花开不败

    2021-01-26 22:07

    B.实参和与其对应的形参共占用一个存储单元

    C.只有当实参和与其对应的形参同名时才共占用存储单元

    D.形参是虚拟的,不占用存储单元

    最佳答案

    e6cb1a03ad541b3098697807b7bf1798.png

    二级知识专家你的偏见

    2021-01-26 22:54

    选A。

    函数调用时,主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送。 形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。

    形参只是实参的一个副本,即拷贝,它们不能公用存储单元,不占相同的空间。

    全部回答

    e6cb1a03ad541b3098697807b7bf1798.png

    1楼在時光深處躲貓貓

    2021-01-27 01:51

    没错 是D 当变量名为函数参数,函数调用时形参是虚拟的,不占用存储单元

    e6cb1a03ad541b3098697807b7bf1798.png

    2楼幼稚园小班大佬

    2021-01-27 01:13

    .C语言程序一般由若干个函数构成,程序中应至少包含一个________min 函数_,其名称只能为____主函数_____

    e6cb1a03ad541b3098697807b7bf1798.png

    3楼风是甜的

    2021-01-27 00:43

    答案:a. 在c语言中,实参与其对应的形参各占独立的存储单元;

    e6cb1a03ad541b3098697807b7bf1798.png

    4楼酒空人散

    2021-01-27 00:20

    在C语言中实参和与其对应的形参共占用一个存储单元。

    C语言是一门面向过程、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。

    C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括一些类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。

    扩展资料

    基本特性

    1、高级语言:它是把高级语言的基本结构和语句与低级语言的实用性结合起来的工作单元。

    2、结构式语言:结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。

    C 语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。

    3、代码级别的跨平台:由于标准的存在,使得几乎同样的C代码可用于多种操作系统,如Windows、DOS、UNIX等等;也适用于多种机型。C语言对编写需要进行硬件操作的场合,优于其它高级语言。

    4、使用指针:可以直接进行靠近硬件的操作,但是C的指针操作不做保护,也给它带来了很多不安全的因素。C++在这方面做了改进,在保留了指针操作的同时又增强了安全性,受到了一些用户的支持,但是,由于这些改进增加语言的复杂度,也为另一部分所诟病。

    Java则吸取了C++的教训,取消了指针操作,也取消了C++改进中一些备受争议的地方,在安全性和适合性方面均取得良好的效果,但其本身解释在虚拟机中运行,运行效率低于C++/C。一般而言,C,C++,java被视为同一系的语言,它们长期占据着程序使用榜的前三名。

    参考资料来源:百度百科-c语言

    e6cb1a03ad541b3098697807b7bf1798.png

    5楼落爺英雄遲暮

    2021-01-27 00:15

    参数之间的传递分为数值传递与地址传递,如果是数值传递时,各自占用不同的内存单元,如果是地址传递时,共用同一段内存单元。

    我要举报

    如以上问答内容为低俗/色情/暴力/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!

    →点此我要举报以上信息!←

    推荐资讯

    大家都在看

    展开全文
  • 用realloc函数重新分配动态存储区 用free函数释放动态存储区 void指针类型 什么是内存的动态分配? 全局变量是分配在内存中的静态存储区的,非静态的局部变量(包括形参)是分配在内存中的动态存储区的,这个存储...

    目录

     

    什么是内存的动态分配?

    怎样建立内存的动态分配?

    用malloc函数开辟动态存储区

    用calloc函数开辟动态存储区

    用realloc函数重新分配动态存储区

    用free函数释放动态存储区

    void指针类型


    什么是内存的动态分配?

          全局变量是分配在内存中的静态存储区的,非静态的局部变量(包括形参)是分配在内存中的动态存储区的,这个存储区是一个称为(stack)的区域。除此以外,C语言还允许建立内存动态分配区域,以存放一些临时用的数据,这些数据不必在程序的声明部分定义,也不必等到函数结束时才释放,而是需要时随时开辟,不需要时随时释放。这些数据是临时存放在一个特别的自由存储区,称为(heap)区。可以根据需要,向系统申请所需大小的空间。由于未在声明部分定义它们为变量或数组,因此不能通过变量名或数组名去引用这些数据,只能通过指针来引用。

    怎样建立内存的动态分配?

    malloc函数开辟动态存储区

    函数原型为:

    void*malloc(unsigned int size);

    作用是在内存的动态存储区中分配一个长度为size的连续空间。形参size的类型定为无符号整型(不允许为负数)。此函数的值(即“返回值”)是所分配区域的第一个字节的地址,或者说,此函数是一个指针型函数,返回的指针指向该分配域的第一个字节。

    int *pNumber = (int*)malloc(100); // 分配100字节内存
    
    int *pNumber = (int*)malloc(25*sizeof(int));//存储25个int值的内存

    类型转换(int*)将函数返回的地址转换成 int 类型的指针。

    在调用 malloc() 时,应该利用 sizeof 计算存储块大小,不要直接写数值,因为不同平台数据类型占用空间大小可能不同

    注意:指针的基类型为void,即不指向任何类型的数据,只提供一个纯地址。如果此函数未能成功地执行(例如内存空间不足),则返回空指针(NULL)。

    用 if 语句检查是否分配:

    int *pNumber = (int*)malloc(25*sizeof(int));
    
        if (!pNumber)
        {
            // 内存分配失败的处理代码
        }    

    calloc函数开辟动态存储区

    函数原型为:

    void *calloc(unsigned n,unsigned size);

    作用是在内存的动态存储区中分配n个长度为size的连续空间,这个空间一般比较大,足以保存一个数组

    calloc函数可以为一维数组开辟动态存储空间,n为数组元素个数,每个元素长度为size。这就是动态数组。函数返回指向所分配域的第一个字节的指针;如果分配不成功,返回NULL

    int *pNumber = (int*)calloc(75, sizeof(int));    
        // 分配了包含75个int元素的数组

    colloc() 与 malloc() 相比有两个优点:
      (1)它把内存分配为给定大小的数组;
      (2)它初始化了所分配的内存,所有位都是 0。

    realloc函数重新分配动态存储区

    函数原型为: 

    void *realloc(void*p,unsigned int size);

    如果已经通过malloc函数或calloc函数获得了动态空间,想改变其大小,可以用realloc函数重新分配。

    realloc函数将p所指向的动态空间的大小改变为sizep的值不变。如果重分配不成功,返回NULL

    free函数释放动态存储区

    函数原型为 

    void free(void *p);

    作用是释放指针变量p所指向的动态空间,使这部分空间能重新被其他变量使用。p应是最近一次调用callocmalloc函数时得到的函数返回值。

    free(p);  //释放指针变量p所指向的已分配的动态空间

    注意:以上4个函数的以上4个函数的声明在stdlib.h头文件中,在用到这些函数时应当用“#include <stdlib.h>”指令把stdlib.h头文件包含到程序文件中。

    void指针类型

    C 99允许使用基类型为void的指针类型。可以定义一个基类型为void的指针变量(void*型变量),它不指向任何类型的数据。在将它的值赋给另一指针变量时由系统对它进行类型转换,使之适合于被赋值的变量的类型。

    int *pt;
    pt=(int *)mcaloc(100);	//mcaloc(100)是void *型,把它转换为int *型
    

    注意:不要把“指向void类型”理解为能指向“任何的类型”的数据,而应理解为“指向空类型”或“不指向确定的类型”的数据。

    例:建立动态数组,输入5个学生的成绩,另外用一个函数检查其中有无低于60分的,输出不合格的成绩。

    #include <stdio.h>
    #include <stdlib.h>	           //程序中用了malloc函数,应包含stdlib.h
    int main()
    {	void check(int *);				//函数声明
    	int *p1,i;					//p1是int型指针
    	p1=(int *)malloc(5*sizeof(int));//开辟动态内存区,将地址转换成int *型,然后放在p1中
    	for(i=0;i<5;i++) 
    		scanf("%d",p1+i);			//输入5个学生的成绩 
    	check(p1);					//调用check函数
    	return 0;
    }
    
    void check(int *p)					//定义check函数,形参是int*指针
    {	int i;
    	printf("They are fail:");
    	for(i=0;i<5;i++)
    		if(p[i]<60) printf("%d ",p[i]); 	//输出不合格的成绩 
    	printf("\n");
    }

    运行程序:

    例二:

    演示动态内存分配:

    #include<stdio.h>
    #include<stdlib.h>
    int main()
    {
    	int i;
    	int *p=(int *)malloc(5*sizeof(int));
    	for(i=0;i<5;i++)
    		p[i]=i; //对p进行赋值
    	for(i=0;i<5;i++)
    		printf("p[%d]=%d\n",i,p[i]);
    	free(p);
    	return 0;
    
    }
    

    运行程序:

    展开全文
  • 形参只是实参的一个副本,即拷贝,它们不能公用存储单元。 如果传入的是指针,那么形参就是实参的一个指针拷贝。此时,形参指针和实参指针指向同一块内存区域,虽如此,但是,不能说它们本身占同一个存储单元。 ...
  • 伪,当调单元煤层煤层的岩层叫位于上面。数时实参炸性低于去爆浓度氧气时瓦斯失。...壁附面上面煤工作工作近C槽.回风顺偶角,语言程用函容易面最工作积聚的地点是瓦斯回采发生。被保突出层C护层,序中而先煤层削弱...
  • 一、内存的静态分配动态分配方式 先简单理解静态分配动态分配: 静态内存分配动态内存分配比较典型的例子就是数组和链表,数组的长度是预先定义好的,在整个程序中是固定不变的,所以他在内存分配时是以静态...
  • 函数调用下形参和实参的内存分配

    千次阅读 2019-04-27 11:54:22
    我们假设一个场景来理解函数调用时候形参和实参的内存分配,过年了,你的一个压岁钱来自于你姑姑给了你100块钱。 先看这一段代码: #include <stdio.h> void earn(int money) { money += 100; } int main()...
  • 在程序运行过程中向计算机申请分配一段存储单元或把早先申请的内存给计算机。 在编写程序时,通常不知道需要处理的数据量,或者难以估计所需处理数据量的变动程度。在这种情况下,要达到有效的资源利用,必须在运行...
  • 链表的C语言实现(含动态内存分配)

    千次阅读 2021-05-22 14:03:05
    转自:http://blog.csdn.net/21aspnet/article/details/146968链表的C语言实现(含动态内存分配)上 链表的C语言实现之动态内存分配一、为什么用动态内存分配但我们未学习链表的时候,如果要存储数量比较多的同类型或...
  • C语言_存储类别

    2021-05-19 19:19:21
    自动变量(auto变量)函数中的局部变量,如果不专门声明为(static)静态存储类别,都是动态分配存储空间的,数据存储动态存储区中。形参与函数中定义的局部变量,都是自动变量,在调用结束就会自动释放这些存储空间...
  • 主要介绍了c语言的形参和实参传递的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 全局变量是分配在内存中的静态存储区的,非静态的局部变量(包括形参)是分配在内存中的动态存储区的,这个存储区是一个称为栈的区域。除此以外,C语言还允许建立内存动态分配区域,以存放一些临时用的数据,这些...
  • C语言之动态存储分配函数

    千次阅读 2013-05-21 12:49:26
    所谓动态内存分配(Dynamic Memory Allocation)就是指在程序执行的过程中动态分配或者回收存储空间的分配内存的方法。   动态内存分配不象数组等静态内存分配方法那样需要预先分配存储空间,而是由系统根据程序...
  • python什么是形参

    千次阅读 2021-11-21 19:40:54
    在调用函数时,给形参分配存储单元,实参可以是常量、变量或者表达式,且要与形参类型一致!而且实参要有确定的值,在调用过程中实参将值赋给形参,并将实际参数对应的数值传递给形式参数; 自定义函数中的“形参”...
  • } p是该函数的形参,要求通过p把动态分配存储单元的地址传回主调函数,则形参p的正确定义应当是:double **p; 解析:动态内存分配函数调用的返回值是所分配内存区域的首地址,而赋值语句的左边是*p,则说明*p是一...
  • C/C++动态分配内存

    千次阅读 多人点赞 2018-04-05 13:41:36
    https://blog.csdn.net/Errors_In_Life/article/details/78889951https://blog.csdn.net/a573233077/article/details/50518909https://blog.csdn.net/weiwenhp/article/details/80065871.  需要动态分配...
  • C存储类型

    千次阅读 2021-05-21 15:08:00
    从变量值存在的时间(生存期)来观察,有的变量在程序运行的整个过程都是存在的,有的变量则是在调用其所在的函数时才临时分配存储单元。也就是说,变量的存储有两种不同方式:静态存储方式和静态存储方式。静态存储...
  • PAGE 1 习题4 一选择题 . 以下关于函数叙述中错误的... 若函数调用时参数为基本数据类型的变量以下叙述正确的是 A实参与其对应的形参共占存储单元 B只有当实参与其对应的形参同名时才共占存储单元 C实参与对应的形参
  • c语言 week9

    2022-04-23 15:42:43
    函数形参存储单元动态分配的。 不是,函数的变量一般是栈区,只要退出函数,系统就会自动回收栈区 而动态分配分配分配堆区,堆区只能手动回收(free函数) 1-2.函数的实参可以是常量,变量或表达式。T ...
  • 从变量值的生存期可以对变量进行分类为【静态存储方式】和【动态存储方式】 用户的存储空间可大致分为以下三种 1、程序区 2、静态区 3、动态区 一、 静态存储 1、基本概念 静态存储方式:指在程序运行时,给变量...
  • )和特定的存储结构(个体的关系)存到主存储器(内存)中,以及在此基础上为实现某个功能(比如查找某个元素,删除某个元素,对所有元素进行排序)而执行的相应操作,这个相应的操作也叫算法。 (比如班里有15个人...
  • 必踩的坑之Java方法中形参、实参传递

    千次阅读 多人点赞 2022-03-24 11:05:10
    在Demo方法中 new Int[] {1,2,3},这个操作会重新在内存中开辟一个空间,然后返回该数组的首地址的值,我们把这个地址值假设为0x2222,内存为0x2222存储了1,2,3;此时i的值指向了0x2222;那么这个时候输出i,当然...
  • 一个算法的存储量包括形参所占空间和临时变量所占空间等。在对算法进行存储空间分析时,只考察临时变量所占空间,如图1.21所示,其中临时空间为变量i、maxi占用的空间。所以,空间复杂度是对一个算法在运行过程中...
  • 在执行函数调用时,系统在栈上为函数内的局部变量及形参分配内存,函数在执行结束时,自行释放掉这些内存。栈内存分配运算内置于处理器的指令集之中,效率很高,但是容量有限。如果往栈中压入的数据超出预先给栈分配...
  • 动态存储和静态存储区域区别

    万次阅读 多人点赞 2017-11-27 19:19:23
     典型的例子是函数的形式参数,在函数定义时并不给形参分配存储单元,只是在函数被调用时,才予以分配, 调用函数完毕立即释放。如果一个函数被多次调用,则反复地分配、 释放形参变量的存储单元。 静态存储方式...
  • 本篇文章是对C++中的内存分配、函数调用与返回值进行了详细的分析介绍,需要的朋友参考下
  • 形参和实参

    2021-12-16 17:35:01
    形参在函数中未被调用时,不占用存储单元,只有在发生函数调用时形参才被分配内存空间,函数调用结束后,释放形参所占的内存空间 在被定义的函数中,必须指定形参的类型 实参可以是常量、变量或者表达式 实参和...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 22,411
精华内容 8,964
关键字:

形参的存储单元是动态分配的