首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C言中函数形参与实参区别

众所周知一个函数有两种参数,即形参和实参。那么究竟什么是形参什么是实参呢? 形参:在定义函数时指定参数,在未出现函数调用时,他们并不占用内存中存储单元。...只有在发生函数调用时,函数中形参才被分配内存单元。在函数调用结束后,形参所占用内存单元也被释放。 实参:即你调用函数时传递参数。实参可以是常量、变量、表达式。...注意:形参和实参实际上占用是两份不同存储单元。  形参和实参之间传递 在c言中实参与形参数据传递是“值传递”,单向传递,只能由实参传给形参,不能由形参传递给实参。...形参值如果发生改变,并不会改变主调函数实参值。...形参与实参之间传递分类 1、按值传递(实形无联系) 按传递就是平常编程中经常用到,定义一个基本数据类型变量,在调用某函数时把该变量作为函数实参传递给函数。

1.1K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C言中数据类型

    如果是普通变量,取以实际意义相符合变量名称,然后在其前添加相关数据类型。如果是指针,则为其标识符添加p。...以ANSI标准规定,标识符可以使任意长度,但外部名知识能由前8个字符唯一地区分 4.数据类型 基本类型 整型 字符型 实型 枚举类型 构造类型 构造类型包括数组类型 结构体类型和共用体类型 指针类型 指针值表示是某个内存地址...空类型类型关键字是void (1)对函数返回限定 (2)对函数参数限定 5....a 97 ​ */ 7.变量存储类别 在C程序中可以选择变量不同存储形式,其存储类别分为静态存储和动态存储。...c语言_副本.png extern变量 extern变量称为外部存储变量。extern声明了程序中将要用到但尚未定义外部变量。一个工程由多个C文件注册地。

    1.2K20

    浅谈C言中类型声明

    之前群友问了一个C语言问题,即int(*(*p)())、int *(*p)()和int *(*p())区别在哪里。确实,有时C语言类型声明是很魔性,看着也很令人头疼。...这里各举一些C言中函数指针、指针、数组声明例子: // 一维数组 int arr[5]; // 二维数组 int arr[4][5]; int arr[][5]; // 指针 int *ptr...typeid 还真就有这么一个测试方法,不过是在C++中——RTTI(运行时类型信息)。好在C++基本兼容C语言类型,所以测试应该也不会有太大问题。...λ c++filt -t PFPivE int* (*)() 阅读重整化类型(GCC,cross-vendor C++ ABI) 不过,去重整完类型名似乎并不太能提供多少关于这个类型信息,反倒是重整过类型名表达更加清楚...所以,我们也有必要来了解GCC中重整化类型名。由于GCC使用cross-vendor C++ ABI,那我们就来看看其关于类型重整编码。 內建类型 内建类型编码基本上可以用这个表格来概括。

    1.7K20

    从Ndom浅谈语言中进制

    其计数系统非常有意思,比如6进制而只有18、36为独立词汇,而其他诸如12等使用乘来表示。而有趣计数系统觉得不止Ndom语言一种,事实上在使用范围广言中也或多或少有这样现象。...接着很简单就能推理得到:fete=6^2=36,tarumba=6^3=216。接下来换着看,看纳瓦特尔。在(1)可以看到,mahtlactli乘上cë不变,所以cë应该是1。...1意思,可以发现和cë十分像,估计是cë变形。...(13)中,纳瓦特尔部分高位是yë-tzontli,而阿兰姆巴ndamno应该是6n次方(≥4)。因为65次方已经是7776了,所以很明显ndamno是6^4=1296。...根据规则,纳瓦特尔494就是1*20^2+4*20+10+4即cen-tzontli-on-näuh-pöhualli-om-mahtlactli-on-nähui;阿兰姆巴569应该是2*6^

    11.1K20

    c言中用户自定义类型

    我们首先关心是如何在Lua中表示一个C语言结构体。Lua语言专门为这类任务提供了一个名为用户数据剧本类型。用户数据为Lua语言提供了可以用来存储任何数据原始内存区域,没有预定义操作。...这种行为对于任何一个Lua库而言都是不可接受。无论你如何使用库,都不应该破坏C语言数据,也不应该让Lua语言崩溃。 要区别不同类型用户数据,一种常见方法是为每种类型创建唯一元表。...在Lua语言中,惯例是将所有新C原因类型注册到注册表中,用类型名作为索引,以元表作为值。由于注册表中还有其他索引,所以必须谨慎选择类型名以避免冲突。...因此,我们可以使用轻量级用户数据在Lua语言中查找C语言对象。 我们已经见到过轻量级用户数据一种典型用法,即在注册表中被用作键。在这种情况下,轻量级用户数据相等性是至关重要。...每次使用lua_pushlightuserdata压入相同地址时,我们都会得到相同Lua值,也就是注册表中相同元素。 Lua语言中另一种典型场景是把Lua语言对象当做对应C语言对象代理。

    1.2K30

    C言中数据类型及其转换

    事实上,汇编语言中数据类型取决于指令操作码。 存储在寄存器、存储器中操作数本身没有数据类型,对该数进行何种数据类型操作完全取决于指令。...高级语言具有数据类型,下面以C语言为例子介绍。 C言中整型变量取值范围: 以char(8位)型变量为例 无论是无符号数还是有符号数,C语言程序并不检测数据在加、减、乘等运算中产生溢出现象。...程序员应尽量避免出现这种情况,所编制应用程序应具有对溢出进行判断功能。 C言中不同类型数据可以互相进行强制类型转换。基本转换原则是尽量保持数真值不变。...C言中数据类型转换包括: 整型数据之间转换 int、float、double之间转换 整型数据之间转换 char、short、int、long 这4种整型数据表示范围不一样,很可能数据转换后精度缺失...C言中整型数据转换包括: 相同字长之间转换 小字长转大字长 大字长转小字长 相同字长之间转换 以char类型为例: 有如下C语言程序段: short si = -32767; unsigned

    11110

    C言中char类型数据范围陷阱

    基础概念 1.char类型是什么 char类型是也是属于整形。 因为char类型存储字符信息是通过存储对应ASCII值来进行存储。而ASCII值就是整数类型。...2.char类型取值范围 char类型存储大小只有一个字节,即8bite(8位二进制数)。整型家族里都有 signed(有符号数) 和 unsigned(无符号数)两种类型。...并且他们默认类型都是 signed 类型。...return 0; } 运行结果 结果是 255 很多人可能会好奇,上述内容我提到默认char类型默认类型是signed (有符号数)类型。其存储数据范围是 -128~127 。...这就是char类型存储一个 陷阱 char类型陷阱解释 在上面的测试中我们已经明白了char类型在计算机存储过程中并不是按照数学意义上从大到小顺序进行存储,而是按照下图所示方式进行存储。

    16110

    c言中数据类型和变量

    数据类型介绍 数据类型分为:内置类型和自定义类型 内置类型 char //character字符 [signed] char //有符号 unsigned char //无符号 short.../假变量Bool 布尔类型使用需要包含头文件 布尔变量取值是:ture false,0表示假,非0表示真  数据类型长度(sizeof) #include <stdio.h...,但是代码要求打印所以一切根据s来说,,s是一个short类型,长度为2,所以代码输出结果为2,37行表达式是不会真实计算  c语言标准规定:sizeof(long)≥sizeof(int) signed...b值里面  强制类型转换 #include int main() { int a =(int)3.14;//3.14属于double类型,在前面添加括号int 即可实现强制转换...scanf()第一个参数是格式化占位符,基本占位跟printf一样 scanf("%d",&i),告诉编译器如何解读用户输入,需要提取数据是什么类型 因为c语言是有格式类型,sanf必须提前知道用户输入数据类型

    7310

    【说站】c言中函数参数类型探究

    c言中函数参数类型探究 函数中参数个数可以是0,也可以是一个或多个参数。下面我们带着这三种不同情况,分别在c言中进行讨论。 1、函数没有参数,表示没有参数列表。...int func1();    //声明一个函数,该函数返回值是整数int类型 float func2();  //声明一个函数,该函数返回值是浮点数float类型 2、有固定参数函数,可以只有一个参数...参数本质上也是一个变量,在定义时应该指出类型和名称。与无参函数定义相比,有参函数定义只有一个参数列表。...类型 3、函数有不确定长度参数,指函数参数数不固定。...printf("%s","hello world"); printf("%d-%d-%d",1,2,3); 以上就是c言中函数参数类型探究,希望对大家有所帮助。

    76320

    一文读懂C言中存储类型

    存储类型类型」 「作用域」 「生命周期」 「存储位置」 auto变量 一对{}内 当前函数 栈区 static局部变量 一对{}内 整个程序运行期 初始化在data段,未初始化在BSS段 extern...>常量区 const int abc = 123; // 未初始化:全局变量 int a1; // 初始化:全局变量 int b1 = 10; // 未初始化:静态全局变量 static int c1...printf("未初始化全局变量:%p\n", &a1); printf("初始化全局变量:%p\n", &b1); printf("未初始化静态全局变量:%p\n", &c1...未初始化静态全局变量:0058A3D8 初始化静态全局变量:0058A174 局部变量:008FFB38 未初始化静态局部变量:0058A3DC 初始化静态局部变量:0058A178 字符串常量:0058A17C...数组:008FFB1C 指针变量:008FFB1C 指针地址:008FFB10

    96510

    谈谈C言中那些常见数据类型

    C言中,数据类型是指用于声明不同类型变量或函数一个广泛系统。C言中数据类型可分为:基本类型、枚举类型、void类型、派生类型。...sizeof 运算符 在C言中,sizeof 是一种单目运算符,它还是计算大小数据类型,包括类、结构、共用体和其他用户自定义数据类型。它以字节形式给出了表达式或类型存储大小。...我们可以利用 sizeof 运算符来获取 char int short long float double 等类型大小。下面我们用实例来获取一些常见整数类型和常见浮点数类型储存大小吧!...关于浮点类型,我也来补充一个四舍五入小案例 题目:输入3.1415926,输出四舍五入后保留三位小数。...void 类型指的是没有可用值,通常有以下三种情况:函数返回为空、函数参数为空、指针指向 void。

    81530

    C语言形参和实参区别?

    实参是程序中已经分配了内存空间参数,它可以被赋予一个具体值,比如常数、数组、地址(指针),也可以是一个变量名、数组名或表达式,当然也包括指针变量。...形参则是你在写一个被调函数时,为了说明用到自变量类型、要进行什么操作而定义,在调用函数前它不会被分配内存空间,更不会被赋予具体值。...调用函数时,形参会被分配一个新内存空间,实参值就会被“复制”进去,让它在被调函数中参与运算。而实参本身不参与这个运算,它仅仅起到一个传递值作用(不过在C++中可以用&改变实参值)。...如果参数形式是指针,那么“复制”就是地址。...(b)); printf("b = %d\n", b); return 0; } 输出func1 = 6, b = 5,实参b值并没有改变。

    1.7K10

    C语言形参和实参区别?

    实参是程序中已经分配了内存空间参数,它可以被赋予一个具体值,比如常数、数组、地址(指针),也可以是一个变量名、数组名或表达式,当然也包括指针变量。...形参则是你在写一个被调函数时,为了说明用到自变量类型、要进行什么操作而定义,在调用函数前它不会被分配内存空间,更不会被赋予具体值。...调用函数时,形参会被分配一个新内存空间,实参值就会被“复制”进去,让它在被调函数中参与运算。而实参本身不参与这个运算,它仅仅起到一个传递值作用(不过在C++中可以用&改变实参值)。...如果参数形式是指针,那么“复制”就是地址。...(b)); printf("b = %d\n", b); return 0; } 输出func1 = 6, b = 5,实参b值并没有改变。

    3.9K20
    领券