《C语言参悟之旅》-读书笔记(四)

PAT|中国大学MOOC-浙江大学翁恺-C语言程序设计习题集(更新中) ##2-0. 整数四则运算 时间限制:400 ms 内存限制:65536 kB 代码长度限制:8000 B 判题程序:Standard 作者:乔林(清华大学) 本题要求编写程序,计算2个正整数的和、差、积、商并输出。题目保证输入和输出全部在整型范围内。 输入格式: 输入在一行中给出2个正整数A和B。 输出格式: 在4行中按照格式“A 运算符 B = 结果”顺序输出和、差、积、商。 输入样例: 3 ... 阅读详情

                                                                             第五章 函数

Ps:     函数的语法本身并不复杂,真正需要编程者去理解和体会的往往是如何用函数来拆解问题,使用函数的水平直接反映在编程者能够组织多大规模的程序

1.C语言中的main( )函数

          main( )函数可以调用任何C语言函数;

          但任何C语言函数都不能调用main( )函数,main( )函数通常在其所属的程序执行时被操作系统调用。

2.C语言函数的组成

         返回值类型说明符    函数名(   参数    )

          {

                          函数体;

          }

   1)函数的返回值

                如果被调函数是无返回值的,那么函数内可以有return语句,也可以没有return语句;但如果被调函数是有返回值的,那么函数体内就必须包含return语句

                如果一个函数中有很多return语句,执行第一条return语句时,函数都将返回到主函数中,此后的其他语句都不会继续执行

   2)C语言规定:凡是不加返回值类型说明符的,一律默认为返回值类型为整型

   3)return语句可以是一个常量、变量、表达式、但必须保证它必须要有一个确定的值

  几点说明:

         一、返回值类型与函数类型不同的3种情况:

           1)没有影响,如:声明为int, 返回为char

           2)   精度丢失,  声明的精度是低精度(如float),返回的为教声明高精度(double)

           3)   编译出错(与具体情况,具体编译器有关)

规范做法:

             显式地声明函数类型                             按照函数声明的类型返回相应类型的值

         二、函数的参数

          1)形式参数声明时前面的数据类型不能省略

          2)实际参数可以是值,也可以是用来表示值的表达式

        

3.函数的调用:

          1)函数可以出现在表达式中,但这时函数必须要返回一个确定的值参与运算

          2)函数可以作为实参来使用 printf( "%d \n ",   display(3,4)  );

          3) 编译环境决定实参的求值顺序  要尽量避免这样的语句   func( i, i++ );

          4) C语言允许函数之间进行嵌套调用,但是不允许函数的嵌套定义。

4.变量的作用域:可以访问某个变量的代码区域

          1)局部变量的作用域:  

                  1>主函数中的变量也只能在主函数中使用,不能在其他函数中使用

                  2>复合语句中定义变量,其作用域也只在复合语句范围内

     

 

              注:             sum的作用域只有在那个大括号中

5.全局变量

             1)如果在某个函数中定义了一个和全局函数同名的变量,那么该同名局部变量就会在函数内部屏蔽全局变量的影响

             2)全局变量最主要的一个作用就是允许多个函数能对某个变量进行修改,但破坏了函数的独立性

             3)全局变量在程序执行过程中始终占用存储单元,而局部变量只有在使用的时候才分配存储空间

6.变量的存储类型

             I.静态存储:在变量定义时就为其分配固定的存储单元并一直保持不变,直到整个程序结束(全局变量)

             II.动态存储:仅当需要的时才临时性地分配存储单元,并且在使用完毕后,动态存储的变量也立即被释放(局部变量)

                1)  auto变量(auto 通常可以省略):采用动态存储;作用域仅限于定义该变量的函数或是复合语句中

                2)全局变量与静态局部变量:采用静态存储;如全局变量,如果程序员想把函数中的局部变量在函数调用结束后不消失而保留原值,在函数下次调用时保存的仍然是上次的值,那就把这个变量定义为static(静态局部变量是在编译的时候赋值的,且只被赋值一次,默认为0,所在函数结束后,仍然存在,但其他函数是不能引用它,)

            注:如果希望一个变量的值能够在修改后保存,并在程序执行期间内被某个可能反复调用的函数持续访问,又希望对其他函数隐藏这个变量, 静态变量是个不错的选择

                3)register变量

                     C语言提供了一个帮助程序员利用CPU寄存器的语法,使用关键字register来声明局部变量时,该变量就是寄存器变量,寄存器变量的值就会被存放在CPU寄存器中(适用在局部变量被频繁使用时使用)

                   注:不能定义任意多个寄存器变量

                          只有局部自动变量和形式参数才能被定义为寄存器变量              

               4)extern变量                                                                                       

 

                作用I:extern是用来修饰外部变量,能扩展外部变量的作用域:extern int n;   extern n 都可以(外部已经有类型名了)

  

作用II:实现变量的跨文件访问:

   编译器总是从使用extern进行外部变量声明的地方开始在本文件中查找外部变量的定义,如果没有,就会从工程中的其他文件中查找

   注意: 使用了这个关键字,不同文件或函数中的值就会彼此产生连带效应,这种错误很隐蔽,增加了调试的难度

static外部变量

这里的static作用是这个变量仅限于本文件

在file2.c文件中,声明了两个外部变量a和变量b,并在func()中使用了它们,因此编译器会在其他文件中去查找,在file1.c中发现这两个变量被static所修饰,不能使用,所以编译器出错

7.多文件程序中函数的调用方法:

  C语言根据函数是否能被其他源文件中的函数调用分为: 内部函数和外部函数

        内部函数:

                 只能被本文件的其他函数使用

                 static 类型说明符  函数名(参数表 )

              {

                                函数体;        

               }

与静态变量不同,这里的static不是指存储方式,而是对函数的作用域仅限于本文件。

内部函数的使用可以增加函数的访问限制,加强了程序的安全性,不同的人编写不同的函数时,也不会影响函数的编译

       外部函数:

                  可以被其他文件中的其他函数所调用(extern可以省略),不同文件通过#include来包含进来

               extern  类型说明符  函数名 (参数表)

              {

                                 函数体;

              }

 

          

 

mojoPortal 路径穿越漏洞复现(CVE-2025-28367)(附脚本)  在 mojoPortal CMS 版本 <=2.9.0.1 中发现了一个导致 ViewState 反序列化的目录遍历漏洞。通过利用此问题,未经身份验证的攻击者可以泄露 Web 根目录中的敏感文件,包括应用程序的文件。此配置文件包含用于验证和解密 ViewState 数据的文件。知道此密钥后,网络攻击者可以构建恶意 ViewState 有效负载,从而导致在底层服务器上执行远程代码。(CVE-2025-28367) 阅读详情

相关推荐

腾讯股票接口API(1)——根据股票代码获取详情

获取股票简要信息,找来找去也没有找到官方的文档,都是复制粘贴的,这里先简单记录一下。 1.简要信息 以贵州茅台为例: http://qt.gtimg.cn/q=s_sh600519 // sh600519是贵州茅台的股票代码,根据自己的关键字拼接URL 可以直接在Android项目中请求,会得到如下一串字符串: v_s_sh600519="1~贵州茅台~600519~2075.95~42.95~2.11~38930~794942~~26078.04~GP-A"; 这里v_s代表简要信息,sh600519

GeofferySun的专栏 6万+

第一次作业(c语言)

static静态变量的类型 说明符是static。 静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量。 例如外部变量虽属于静态 存储方式,但不一定是静态变量,必须由 static加以定义后才能成为静态外部变量,或称静态全局变量。 static 函数…..内部函数和外部函数当一个源程序由多个源文件组成时,C语言根据函数能否被其它源文件中的函数调用,将函数分为内部函数和外部函

a4a2a1的博客 702

反激变压器反射电压详解

我以前做过隔离式的POE模块,其电路实际就是个反激式开关电源。只不过其输入电压范围比较低,为44V-57V。 电路如下图,就是个flyback。 可以看到,电路中有个钳位电路,用来抑制电压尖峰,就在初级线圈那里。 问题 抑制尖峰通常有2种电路,一种叫RCD钳位,另外一种是用TVS管+二极管钳位。 这两种实际中都有用,今天我不想讨论它们的区别,只想说明一个问题: 为什么不能只用一个二极管搞定?像继电器电路那样?不也能抑制尖峰吗? 答案自然是不行的...

weixin_42005993的博客 2万+

《C语言参悟之旅》 -读书笔记(一)

最近在看《C语言参考之旅》,感觉这本书不错,作者有用心去写,也写出了一些实际开发过程中雪要注意的细节,和高校教师所编的书还是有一定区别,初看好像很简单,但仔细看还是有一定的深度,适合掌握了一些基本语法的 C语言学习者学习,本文记下了阅读过程中自己认为比较重要而在学校教材里没有讲透彻的地方摘录下来

linuxlinuxlinuxlinux的专栏 1406

Zemax实战:20×超高清变焦镜头设计全流程解析(从架构到制造)

本文详细解析了使用Zemax软件设计一款20倍变焦比、恒定F2.8光圈8K超高清镜头的全流程。从应对恒定光圈、宽光谱与8K解析力三大挑战的初始架构规划,到构建多重组态模型、分七阶段进行像差优化与公差分析,最终跨越制造鸿沟,为广播级影视与高精度工业检测应用提供了实战指南。

sun99的博客 552

动态对抗Zygisk-IL2CppDumper:Unity游戏安全新策略

本文深入探讨了对抗Zygisk-IL2CppDumper攻击的Unity游戏安全新策略。通过实时内存监控、动态混淆技术和异常行为检测体系,有效防止关键代码被动态提取。文章详细介绍了内存指纹系统、运行时混淆方案和五维特征模型等实用防御手段,帮助开发者提升游戏安全性。

weixin_29325955的博客 306

c语言参悟之旅,《C语言参悟之旅》-读书笔记(一)

第一章 程序设计与C语言1.什么是计算机程序?计算机程序是指能使计算机做出信息处理行为并产生一定结果的指令集和(就像做菜的菜谱)2.高级语言的执行方式?( 1 )采用编译方式编译----->编译----->链接----->生产可执行文件(2)解释方式利用针对某种高级语言的解释软件,解释所遇到的高级语言中的每个操作并完成这些操作所要执行的动作高级程序员程序----------...

weixin_42521276的博客 355

Python实现多元线性回归(Multiple Linear Regression)

多元线性回归是一种用于建立多个自变量与因变量之间关系的统计学方法。在多元线性回归中,我们可以通过多个自变量来预测一个因变量的值。每个自变量对因变量的影响可以用回归系数来表示。

优快云 精品推荐 4332

《C语言参悟之旅》-读书笔记(八)

第九章   结构体和共用体 一、结构体 由一系列具有相同类型或不同类型的的数据构成的数据集合(但不能包含函数类型) 1.定义   1)第一种形式 struct 结构体类型名 { 数据类型名1 成员名1; ......... 数据类型名2 成员名2; }; struct 结构体类型名 变量名列表;   2)第二种形式 struct 结构体类型名 {

linuxlinuxlinuxlinux的专栏 1591

完整功能-《网络安全创新实践》:设计并实现一种基于Npcap的网络嗅探器(直接能运行cpp的MFC代码+实验报告)

《网络安全创新实践》:设计并实现一种基于Npcap的网络嗅探器。(直接能跑的MFC)监听所有数据包,以及监听指定IP地址的数据包;(2)能够显示完整的IP数据包首部信息,例如:版本、首部长度、数据包长度、数据包类型(协议字段)、TTL、源IP地址、目的IP地址等;(3)能够显示完整的TCP报文段信息,例如:源端口、目的端口、序号、确认号、数据部分等;(4)能够自动检测SQL注入攻击等Web攻击行为;(5)能够将监听到的数据包信息保存到文件中,以及从文件中读取并显示数据包信息;(6)具有图形化操作界面。

weixin_46531010的博客 661

生成自定义工具栏

我们生成了和VBA时代几乎一样的常用的工具栏。用WPF也可以完成以后的插件开发,界面控件编写基本靠自己绘画,还有用代码去控制,代码结构像HTML,做过网站的应该可以很快入手。其它后台C#代码除了对控件代码的控制外,和WinForm基本相同,但目前来看用WPF是生成自定义工具栏的较好的办法。当然,你也可以在工具栏命令中调用WinForm程序,对Coreldraw进行操作,这也应该是比较高效的办法,下次会讨论。资源的加入是本次调试的难点之一,我们的目标是让图片资源嵌入到程序中去,不必去电脑文件目录去调用;

力先生C#程序开发 1378

《C语言参悟之旅》-读书笔记(六)

第7章指针 C语言编写的程序至今仍能和汇编语言程序相媲美,其中一个重要原因就是拥有一种数据类型——指针(内存操作) 1.指针和地址   间接访问方式     通过变量来访问( 计算机用一个别称(变量)来标识存储单元,计算机在寻找内存的数据时就要先把这个别称翻译成地址才行  )  直接访问方式    通过地址来访问  ps:  变量其实就是内存存储单元的一个临时的别名,而地址才是这个存

linuxlinuxlinuxlinux的专栏 1282

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

《C语言参悟之旅》-读书笔记(九)

第十章  文件 文件就是一组相关元素或数据的有序集合,每个集合都有一个符号化的指代(文件名) 文件通常都被存在外部存储器上,它只在需要使用时被调入内存 一.相关概念: 1.主要分类   1).  普通文件:驻留在磁盘或其他外部介质上的一些有序数据集,   2).设备文件(逻辑上的文件): 和主机相连的各种外部设备:如显示器、打印机、键盘 2.流的概念  流就是表示文本输入(或输出)

linuxlinuxlinuxlinux的专栏 2226

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

《C语言参悟之旅》-读书笔记(三)

第四章   流程控制 1.流程图(当初学的时候觉得很麻烦,现在觉得对整理编程思路帮助还是很大) 2.顺序结构   3.分支结构  1)形式 (  else 总是与其前面最近的 if 配对 )        A . if(表达式)               语句;        B. if(表达式)             语句1;           else

linuxlinuxlinuxlinux的专栏 748

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

《C语言参悟之旅》-读书笔记(二)

第三章  运算符、表达式和语句 1.在表达式中使用(   )是一种很好的编程方式能大大提高程序的可读性如:            标准C中对很多运算符的求值顺序都没有进行明确规定,实现顺序与具体实现有关( 编译环境)                                                                        -a +b / 2 - c * 5

linuxlinuxlinuxlinux的专栏 895

《C语言参悟之旅》-读书笔记(一)

第一章    程序设计与C语言            1.什么是计算机程序?               计算机程序是指能使计算机做出信息处理行为并产生一定结果的指令集和(就像做菜的菜谱)         2.高级语言的执行方式?              ( 1 )采用编译方式                                  编译----->编译----->链接--

Ac Dream 864
上一篇: 换行和回车的区别
下一篇: 《C语言参悟之旅》-读书笔记(五)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值