![](https://img-blog.csdnimg.cn/direct/3ae3e8e386504aab924cf090dec1941b.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
c语言学习
文章平均质量分 57
c语言基础知识分享,本人也是小白,萌新欢迎订阅,一起努力,会解决基础知识和概念深入。
三千弱水,取一瓢饮
华中科技大学靓仔,致力于分享知识
展开
-
文件的基础知识与读写
磁盘上的⽂件是⽂件。但是在程序设计中,我们⼀般谈的⽂件有两种:程序⽂件、数据⽂件(从⽂件功能的⻆度来分类 的)A.程序文件程序⽂件包括源程序⽂件(后缀为.c),⽬标⽂件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)。B.数据文件⽂件的内容不⼀定是程序,⽽是程序运⾏时读写的数据,⽐如程序运⾏需要从中读取数据的⽂件,或者输出内容的⽂件3.文件名⼀个⽂件要有⼀个唯⼀的⽂件标识,以便⽤⼾识别和引⽤。原创 2023-12-28 20:13:25 · 1074 阅读 · 0 评论 -
结构体的对齐规则
如果我们能保证将所有的double类型的数据的地址都对⻬成8的倍数,那么就可以⽤⼀个内存操作来读或者写值了。4. 如果嵌套了结构体的情况,嵌套的结构体成员对⻬到⾃⼰的成员中最⼤对⻬数的整数倍处,结构 体的整体⼤⼩就是所有最⼤对⻬数(含嵌套结构体中成员的对⻬数)的整数倍。3. 结构体总⼤⼩为最⼤对⻬数(结构体中每个成员变量都有⼀个对⻬数,所有对⻬数中最⼤的)的 整数倍。2. 其他成员变量要对⻬到某个数字(对⻬数)的整数倍的地址处。对⻬数 = 编译器默认的⼀个对⻬数 与 该成员变量⼤⼩的较⼩值。原创 2023-12-25 23:00:03 · 499 阅读 · 0 评论 -
数组和指针常见笔试and期末题(超详细)
希望大家好好研究,不管期末还是笔试还是林林总总的比赛啥的,都是易考点哦。原创 2023-12-24 23:21:01 · 691 阅读 · 2 评论 -
c语言易错题之数据类型变换
【代码】c语言易错题之数据类型变换。原创 2023-12-22 20:06:41 · 408 阅读 · 0 评论 -
一道十分容易错的笔试题
实际上,我们通过前面的学习可以知道sizeof返回的类型是unsigned int,但我们却因为学艺不精,没有了解到实际上sizeof实际上会将括号内的东西进行一个整型提升,这是什么意思呢,实际上,这就是在说,如果你括号内为一个有符号整型,我会强制性改变你的符号位,将你强制变成无符号整型。-1的二进制为1111 1111,整型提升后为0111 1111,改变了符号位数字,所以我们可以很容易知道,实际上i已经不再是-1了,它是一个非常大的数,它也比所谓的4还要大。大家可以通过调试,运行,自己验证一遍呢!原创 2023-12-21 19:52:50 · 500 阅读 · 2 评论 -
sizeof和strlen的对比
注意strlen函数返回的类型并不只是单纯的整型,它和sizeof函数一样,实际上他们返回的类型为无符号整型,实际上也就是说size_t类型实际上就是unsigned int类型,这里是我们需要注意的,而在vs编译器中,无符号整型对应的占位符,并不是%d,它实际上是%zd,所以这也是为什么当我们写%d会在有时候报错的原因,这也是我们要注意的一个点,下面我们就都换成%zd。我们在对他们进行运行后,我们会发现实际上运行的结果是不同的,甚至第一条语句运行出来的是随机值,而第二条是3,第三条是3,第四条是4。原创 2023-12-21 19:32:08 · 389 阅读 · 2 评论 -
qsort函数应用
qsort函数一共设计四个参数,第一个参数是数组的地址,因为它要比较不同数据类型,所以它要有一个比较的入口,第二个参数是数组中元素的个数,第三个参数是数组的元素大小,第四个参数是最难的一个参数,他是一个函数指针,因为我们在这里需要提供一个函数,一个可以提供比较方法的函数。我们前面学习了一些常见的排序方法,比如冒泡排序等,但它仅局限于整型的排序,今天我们要介绍一个牛气哄哄的库函数qsort函数,这个函数可就厉害了,能排序任意类型数据,掌握后可谓受益终身,接下来让我们一起来学习这个牛牛的库函数吧。原创 2023-12-19 21:55:40 · 443 阅读 · 1 评论 -
回调函数详解
如果你把函数的指针(地址)作为参数传递给另⼀个函数,当这个指针被⽤来调⽤其所指向的函数时,被调⽤的函数就是回调函数。回调函数不是由该函数的实现⽅直接调⽤,⽽是在特定的事件或条件发⽣时由另外的⼀⽅调⽤的,⽤于对该事件或条件进⾏响应。在我们写的计算机的实现的代码中,有些代码是重复出现的,其中虽然执⾏计算的逻辑是区别的,但是输⼊输出操作是冗余的,有没有办法,简化⼀些呢?我们发现在每一个case的后面都有着一堆相似重复的代码,这些代码会增加计算机的负担,对此,我们可以通过回调函数来对代码进行优化。原创 2023-12-16 22:48:31 · 354 阅读 · 1 评论 -
指针类型汇总笔记
原创 2023-12-16 22:59:05 · 681 阅读 · 1 评论 -
函数指针变量
根据前⾯学习整型指针,数组指针的时候,我们的类⽐关系,我们不难得出结论: 函数指针变量应该是⽤来存放函数地址的,未来通过地址能够调⽤函数的。那么函数是否有地址呢?如果我们要将函数的地址存放起来,就得创建函数指针变量咯,函数指针变量的写法其实和数组指针⾮常类似。确实打印出来了地址,所以函数是有地址的,函数名就是函数的地址,当然也可以通过。通过函数指针调⽤指针指向的函数。函数名 的⽅式获得函数的地址。什么是函数指针变量呢?原创 2023-12-09 23:52:13 · 434 阅读 · 2 评论 -
字符指针变量
实际上这里并不是将整个字符串都放入指针,而是将它的首个字符放入了指针当中,所以当我们执行的时候得到的是h,我们还可以用*pstr[1]这个时候打印的便是e,以此类推。当然我们也可以直接*“hello bit”[1],打印的结果最终也是e,因为它们本质都是一样的。但是和数组不同的是,数组是可以通过指针来修改数组中的元素的,但字符串实际上只是常量,它是不能通过指针修改的,也不能修改。实际上字符串我们可以认为是一个存放字符的数组,它实际上的使用方法也和数组类似。原创 2023-12-06 21:44:39 · 458 阅读 · 0 评论 -
c语言上机小练(有点难)
要求:main函数存储字符串和提取得到的一组整型数,process函数负责完成提取字符串中的连续数字字符后转换为十进制整数并存入对应数组元素中,同时返回转换得到的整数个数,如果输入空串,process函数返回-1,如果非空串,但无连续数字字符,则返回0。将其中连续的数字作为一个十进制整数,依次存放到一个数组a中。这道题真的是对我来说很难,是我第一次敲了两个小时的代码了,第一个小时是完成整数寻找的设计,第二个小时是对函数进行防御机制的设计,中间代码出错,一行一行调试了很久,发现调试太好用了,哭死。原创 2023-12-06 22:02:37 · 4184 阅读 · 3 评论 -
冒泡排序详解
但是这里我们不难推出,实际上即便你的数字按照顺序排好,再调用上述函数时也要执行很多遍,但这也增加了程序的工作量,在这里我们可以进行一个优化,就是可以判断数组是否需要进行排序,或者在排序的过程中,省略一些步骤。冒泡排序顾名思义,即像小鱼吐泡泡一样,泡泡慢慢飘上来,一个接着一个,冒泡排序便是通过比较相邻两个数的大小,轮完一遍后,会将最大的数放到前面,然后接着再轮上第二遍,把第二大的放到相应位置,以此类推。原创 2023-12-02 22:25:11 · 891 阅读 · 3 评论 -
一维数组传参的本质
我们知道在x86的环境下,栈区空间都是先使用高地址,再使用低地址的。这个代码搞明⽩后,我们再试⼀下,如果我们再分析⼀下,数组名arr是数组⾸元素的地址,可以赋值给p,其实数组名arr和p在这⾥是等价的。⾸先让我们从⼀个问题开始,我们之前都是在函数外部计算数组的元素个数,那我们可以把函数传给⼀个函 数后,函数内部求数组的元素个数吗?数组元素的访问在编译器处理的时候,也是转换成⾸元素的地址+偏移量求出元素的地址,然后解引⽤来访问的。的时候,传递的是数组名,也就是说本质上数组传参本质上传递的是数组⾸元素的地址。原创 2023-11-30 19:43:07 · 483 阅读 · 1 评论 -
二分查找(折半查找)探究学习
⽐如我买了⼀双鞋,你好奇问我多少钱,我说不超过300元。你还是好奇,你想知道到底多少,我就让你猜,你会怎么猜?你会1,2,3,4...这样猜吗?⼀般你都会猜中间数字,⽐如:150,然后看⼤了还是小了,这就是⼆分查找,也叫折半查找。但是这种查找方法有一定的局限性,因为如果当它数字很大的时候,我们便需要一个一个校对,对计算机的工作量比较大。c.根据左右下标确定中间元素和要找的元素进行比较。{找不到,依据大小关系,确定新的查找范围}d.根据左右下标确定中间元素的下标。b.确定被查找范围的左右下标。原创 2023-11-29 20:51:35 · 1141 阅读 · 13 评论 -
函数的声明和定义
⼀般在企业中我们写代码时候,代码可能⽐较多,不会将所有的代码都放在⼀个⽂件中;⼀般情况下,函数的声明、类型的声明放在头⽂件(.h)中,函数的实现是放在源⽂件(.c)⽂件中。这是因为C语⾔编译器对源代码进⾏编译的时候,从第⼀⾏往下扫描的,当遇到第7⾏的is_leap_year 函数调⽤的时候,并没有发现前⾯有is_leap_year的定义,就报出了上述的警告。就是函数调⽤之前先声明⼀下is_leap_year这个函数,声明函数只要交代清 楚:函数名,函数的返回类型和函数的参数。函数要先声明后使⽤;原创 2023-11-14 18:55:33 · 114 阅读 · 0 评论 -
数组小练习
多个字符从两端移动,向中间汇聚。原创 2023-11-12 22:37:39 · 31 阅读 · 0 评论 -
操作符详解
由于10为正整数,故补码为其本身:0000000000000000000000000001010。将原码转化为补码后,将两个补码对比看,如果均为1则为1,一个为0一个为1或均为0则该位为0。将原码转化为补码后,将两个补码对比看,如果均为0则为0,一个为0一个为1或均为0则该位为1。将原码转化为补码后,将两个补码对比看,如果该位不同则该位为1,如果该位相同则为0。2. 算术右移:左边⽤原该值的符号位填充,右边丢弃(大多数软件都是这种操作)。警告⚠️:对于移位运算符,不要移动负数位,这个是标准未定义的。原创 2023-11-17 22:47:09 · 390 阅读 · 1 评论 -
assert断言
有⼏个好处:它不仅能⾃动标识⽂件和出问题的⾏号,还有⼀种⽆需更改代码就能开启或关闭 assert()如果已经确认程序没有问题,不需要再做断⾔,就在 #include <assert.h>,⽤于在运⾏时确保程序符合指定条件,如果不符合,就报错终⽌运⾏。中写⼊⼀条错误信息,显⽰没有通过的表达式,以及包含这个表达式的⽂件名和⾏号。,程序继续运⾏,否则就会终⽌运⾏,并且给出报错信息提⽰。的缺点是,因为引了额外的检查,增加了程序的运⾏时间。然后,重新编译程序,编译器就会禁⽤⽂件中所有的。语句的前⾯,定义⼀个宏。原创 2023-11-25 22:12:16 · 482 阅读 · 0 评论 -
指针运算详解
因为数组在内存中是连续存放的,只要知道第⼀个元素的地址,顺藤摸⽠就能找到后⾯的所有元素。原创 2023-11-24 20:26:49 · 654 阅读 · 0 评论 -
野指针详解
概念: 野指针就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的)。原创 2023-11-24 20:39:52 · 510 阅读 · 0 评论 -
指针的使用和传址调用
Swap1函数在使⽤的时候,是把变量本⾝直接传递给了函数,这种调⽤函数的⽅式我们之前在函数的时候就知道了,这种叫传值调⽤。我们现在要解决的就是当调⽤Swap函数的时候,Swap函数内部操作的就是main函数中的a和b,直接将a和b的值交换了。那么就可以使⽤指针了,在main函数中将a和b的地址传递给Swap函数,Swap函数⾥边通过地址间接的操作main函数中的a和b,并达到交换的效果就好了。传址调⽤,可以让函数和主调函数之间建⽴真正的联系,在函数内部可以修改主调函数中的变量;所以Swap是失败的了。原创 2023-11-25 22:17:45 · 799 阅读 · 1 评论 -
c语言上机作业:给函数增加防御机制
那么问题又来了,如果z可以取负数,那么这样的话不就与之冲突了么,而且如果函数很复杂,我也不知道能不能取到呀。这里我们就要认识形参与实参的关系了,形参是不能改变实参,但我们可以通过地址找到他,从而来更改,但目前地址还没学,我们可以使用一下引用,这个引用不等于形参,因为它是本来就是实参,只不过换了个名字而已,这样的话,我们就可以通过直接更改所引用的参数的值,然后至于函数可否运行,能不能实现,我们则用状态来判断,如-1和其他的数,接下来,我们具体看一下代码。z = log(x);else。原创 2023-11-21 23:13:31 · 227 阅读 · 0 评论 -
指针变量与指针类型的深入理解
相关代码展示int main()*pi = 0;return 0;return 0;return 0;原创 2023-11-23 18:25:13 · 149 阅读 · 0 评论 -
关键字const的修饰(指针)
就是为了不能被修改,但const只是限制了n,没有限制*p,所以如果p拿到n的地址就能修改n,这样就打破了const的限制,这是不合理的,所以应该让p拿到n的地址也不能修改n,那接下来怎么做呢?上述代码中n是不能被修改的,其实n本质是变量,只不过被const修饰后,在语法上加了限制,只要我们在代码中对n就⾏修改,就不符合语法规则,就报错,致使没法直接修改n。const如果放在*的右边,修饰的是指针变量本⾝,保证了指针变量的内容不能修改,但是指针指。这就是const的作⽤。向的内容,可以通过指针改变。原创 2023-11-23 20:03:19 · 516 阅读 · 0 评论 -
函数栈帧的创建和销毁
我们在写C语言代码的时候,经常会把一个独立的功能抽象为函数,而函数的创建与实现,是需要在栈区中获取一处空间的,所以C程序是以函数为基本单位的。那函数是如何调用的?函数的返回值又是如何待会的?函数参数是如何传递的?这些问题都和函数栈帧有关系。所以我们只要理解了函数栈帧的创建和销毁,以下问题就能够很好地理解了:1.局部变量是如何创建的?2.为什么局部变量不初始化内容是随机的?3.函数调用时参数时如何传递的?传参的顺序是怎样的?4.函数的形参和实参分别是怎样实例化的?原创 2023-11-14 23:16:27 · 140 阅读 · 0 评论 -
static和extern关键字详解
但是全局变量被 static。结论:static修饰局部变量改变了变量的⽣命周期,⽣命周期改变的本质是改变了变量的存储类型,本来⼀个局部变量是存储在内存的栈区的,但是被 static 修饰后存储到了静态区。代码2中,我们从输出结果来看,i的值有累加的效果,其实 test函数中的i创建好后,出函数的时候是不会销毁的,重新进⼊函数也就不会重新创建变量,直接上次累积的数值继续计算。修饰之后,外部链接属性就变成了内部链接属性,只能在⾃⼰所在的源⽂件内部使⽤了,其他源⽂件,即使声明了,也是⽆法正常使⽤的。原创 2023-11-22 20:29:23 · 841 阅读 · 0 评论 -
指针变量和地址
前⾯的内容我们了解到,32位机器假设有32根地址总线,每根地址线出来的电信号转换成数字信号后是1或者0,那我们把32根地址线产⽣的2进制序列当做⼀个地址,那么⼀个地址就是32个bit位,需要4个字节才能存储。那我们通过取地址操作符(&)拿到的地址是⼀个数值,⽐如:0x006FFD70,这个数值有时候也是需要 存储起来,⽅便后期再使⽤的,那我们把这样的地址值存放在哪⾥呢?同理64位机器,假设有64根地址线,⼀个地址就是64个⼆进制位组成的⼆进制序列,存储起来就需要8个字节的空间,指针变的⼤⼩就是8个字节。原创 2023-11-20 21:18:12 · 243 阅读 · 0 评论 -
c语言上机作业:迭代法求平方根
2.同时我们这里使用double类型是为了避免出现栈溢出,数据溢出的情况,break可以当误差足够小时实现循环的终止。b.同时,依据函数的防御原理,我们需要综合考虑一下用户在输入时可能会出现负数的情况,同时当输入数据等于0的时候会出现的分母为0的情况。a.这里要求我们设置一个函数能够完成牛顿迭代法,这里需要使用到函数迭代的知识,即函数里面用应用到函数。1.这里用fabs()这个绝对值函数时需要库函数的申明,即#include<math.h>设计一个函数func用迭代法编程求一个数的平方根。原创 2023-11-21 22:31:43 · 449 阅读 · 0 评论 -
深⼊理解指针(1)
我们可以简单理解,32位机器有32根地址总线, 每根线只有两态,表⽰0,1【电脉冲有⽆】,那么 ⼀根线,就能表⽰2种含义,2根线就能表⽰4种含义,依次类推。我们知道计算上CPU(中央处理器)在处理数据的时候,需要的数据是在内存中读取的,处理后的数据也会放回内存中,那我们买电脑的时候,电脑上内存是8GB/16GB/32GB等,那这些内存空间如何⾼效的管理呢?每个内存单元也都有⼀个编号(这个编号就相当于宿舍房间的⻔牌号),有了这个内存单元的编号,CPU就可以快速找到⼀个内存空间。的每⼀个位置,这是为何?原创 2023-11-15 21:19:22 · 162 阅读 · 1 评论 -
数组名的理解
sizeof(数组名),sizeof中单独放数组名,这⾥的数组名表⽰整个数组,计算的是整个数组的⼤⼩,单位是字节。&数组名,这⾥的数组名表⽰整个数组,取出的是整个数组的地址(整个数组的地址和数组⾸元素的地址是有区别的)的⽅式拿到了数组第⼀个元素的地址,但是其实数组名本来就是地址,⽽且是数组⾸元素的地址,我们来做个测试。我们发现数组名和数组⾸元素的地址打印出的结果⼀模⼀样,数组名就是数组⾸元素(第⼀个元素)的地址。输出的结果是:40,如果arr是数组⾸元素的地址,那输出应该的应该是4/8才对。原创 2023-11-25 22:22:34 · 652 阅读 · 0 评论 -
操作符前提:各种进制与各种码(计算机基础)
8进制的数字每⼀位是0~7的,0~7的数字,各⾃写成2进制,最多有3个2进制位就⾜够了,⽐如7的⼆进制是111,所以在2进制转8进制数的时候,从2进制序列中右边低位开始向左每3个2进制位会换算⼀个8进制位,剩余不够3个2进制位的直接换算。其实10进制的每⼀位是权重的,10进制的数字从右向左是个位、⼗位、百位....,分别每⼀位的权重是 1 , 10 , 100 ...有符号整数的三种表⽰⽅法均有符号位和数值位两部分,2进制序列中,最⾼位的1位是被当做符号 位,剩余的都是数值位。原创 2023-11-16 21:36:37 · 160 阅读 · 1 评论 -
函数递归所应满足的条件
实际上我们在使用函数的时候,都会在栈空间分配一块内存,而如果这个函数没有进行完,那么这块空间就不会得到释放,而这个函数又永远不会跳出递归,所以便不断地在内存占据空间,这种死递归没有限制,会无限循环下去,而栈内存的空间是有限的,最终便出现栈溢出的报警。那我们就可以写出函数Fact求n的阶乘,假设Fact(n)就是求n的阶乘,那么Fact(n-1)就是求n-1的阶。这样的思路就是把⼀个较⼤的问题,转换为⼀个与原问题相似,但规模较⼩的问题来求解的。的时候,n的阶乘是1,其余n的阶乘都是可以通过上述公式计算。原创 2023-11-28 22:17:44 · 883 阅读 · 4 评论 -
数组的学习
数组是⼀组相同类型元素的集合;从这个概念中我们就可以发现2个有价值的信息:•数组中存放的是1个或者多个数据,但是数组元素个数不能为0。•数组中存放的多个数据,类型是相同的。数组分为⼀维数组和多维数组,多维数组⼀般⽐较多⻅的是⼆维数组。2.一维数组A.创建存放在数组的值被称为数组的元素,数组在创建的时候可以指定数组的⼤⼩和数组的元素类型。•type指定的是数组中存放数据的类型,可以是:charshortintfloat等,也可以⾃定义的类型。•arr_name。原创 2023-11-05 17:44:16 · 99 阅读 · 0 评论 -
常见操作符汇总
a原来是10,先+1,后a变成了11,再使⽤就是赋值给b,b得到的也是11,所以计算技术后,a和b都是11。a原来是10,先使⽤,就是先赋值给b,b得到了10,然后再+1,然后a变成了11,所以直接结束后a是 11,b是10。都是有2个操作数的,位于操作符两端的就是它们的操作数,这种操作符也叫双⽬操作符。:或运算符,就是或者的意思(两侧⾄少有⼀个表达式为真,则为真,否则为假)。:与运算符,就是并且的意思(两侧的表达式都为真,则为真,否则为假)。除号的两端如果是整数,执⾏的是整数除法,得到的结果也是整数。原创 2023-10-25 20:38:10 · 189 阅读 · 0 评论 -
综合提高:猜数字游戏
rand函 数是对⼀个叫“种⼦”的基准值进⾏运算⽣成的随机数,这个种子就相当于是每个表的代号,不同表不同系列的数,之所以前⾯每次运⾏程序产⽣的随机数序列是⼀样的,那是因为rand函数⽣成随机数的默认种⼦是1。如果再深⼊了解⼀下,我们就不难发现,其实rand函数⽣成的随机数是伪随机的,伪随机数不是真正 的随机数,是通过某种算法⽣成的随机数。返回的类型是time_t类型的,然而,当我们反复运行5,6遍后,我们发现实际上这5个数对应相同,也就是说实际随机数并不能说是真正意义的随机,这与随机数的原理有关,原创 2023-11-04 21:58:29 · 140 阅读 · 1 评论 -
do while语句以及while循环中break与continue语句
而在 do while 循环中先执⾏“语句”,执⾏完语句,在去执⾏“判断表达式”,判断表达式的 结果是!在循环执⾏的过程中,如果某些状况发⽣的时候,需要提前终⽌循环,这是⾮常常⻅的现象。这两种循环都是先判断,条件如果满⾜就进⼊循环,执⾏循环语句,如果不满⾜就跳 出循环;那以后我们在循环中,想在某种条件下终⽌循环,则可以使⽤ break。后的判断表达式,表达式为真,就会进⾏下⼀次,表达式为假,则不再继续循环。到循环的判断部分,进⾏下⼀次循环的判断,如果循环的调整是在。被执⾏,直接就会跳出循环,继续往后执⾏。原创 2023-11-01 19:11:59 · 225 阅读 · 1 评论 -
小练习:亲密数
但我们求因子我们知道1是任何数的因数,而1没有因子,所以我们输入的数应该是大于的,同时我们也可以推知一个数的因子,一定不会超过它的一半,否则除后就是分数了。2)在输出每对亲密数时,小数在前、大数在后,并去掉重复的亲密数对,例如:220和284是一对亲密数,而284和220也是一对亲密数,只输出220和284这对“亲密数”这道题的难度还是蛮大的,实际上。然而,当我们解决了因子和这一难关时,却有又一道坎摆在我们面前,接下来,我们要判断两个是否互为亲密数,而且这两个数也可以相等,同时也要约束在500以内。原创 2023-10-31 22:20:11 · 1798 阅读 · 1 评论 -
函数的引入
了解了库函数,我们的关注度应该聚焦在⾃定义函数上,⾃定义函数其实更加重要,也能给程序员写代码更多的创造性。ret_type fun_name(形式参数)•ret_type是函数返回类型•fun_name是函数名•括号中放的是形式参数•{}括起来的是函数体我们可以把函数想象成⼩型的⼀个加⼯⼚,⼯⼚得输⼊原材料,经过⼯⼚加⼯才能⽣产出产品,那函数也是⼀样的,函数⼀般会输⼊⼀些值(可以是0个,也可以是多个),经过函数内的计算,得出结果。•ret_type。原创 2023-11-08 23:59:49 · 227 阅读 · 1 评论 -
函数的参数及返回值
这⾥的set_arr函数要能够对数组内容进⾏设置,就得把数组作为参数传递给函数,同时函数内部在设 置数组每个元素的时候,也得遍历数组,需要知道数组的元素个数。我们在调试的可以观察到,x和y确实得到了a和b的值,但是x和y的地址和a和b的地址是不⼀样的,所以我们可以理解为形参是实参的⼀份临时拷⻉。⽐如:写⼀个函数对将⼀个整型数组的内容,全部置为-1,再写⼀个函数打印数组的内容。,称为形式参数,简 称形参?虽然我们提到了实参是传递给形参的,他们之间是有联系的,但是形参和实参各⾃是独⽴的内存空。原创 2023-11-09 23:15:51 · 303 阅读 · 1 评论