局部变量、全局变量、main函数、形参实参、getchar

全局变量和局部变量(static,extern,volatile) 全局变量存储区的生命周期是整个程序的执行时间范围;值得注意的是虽然局部变量的声明周期得到了很大的提升,但他的作用域没有发生任何的改变,还是只能在那个局部的范围内使用。2,一个共享变量(类的成员变量、类的静态成员变量)被 volatile 修饰之后:保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。声明在函数内部的变量叫局部变量,局部变量的作用域是它所在函数内部的所有语句,声明在所有函数外边的变量叫全局变量,它们的作用域是程序中的所有语句。 阅读详情
//局部变量,调用完成之后会被回收
//局部变量为块语句服务,块语句执行结束,局部变量就会被回收
//函数内部定义的变量,还有函数的参数都是局部变量

//局部变量和全局变量重名的情况下,局部变量会屏蔽全局变量
//c++可以用::访问全局变量,c语言不可以

int num = 0;
void main()
{
	//int num;
	printf("%d\n", num);
	system("pause");
}

//创建全局变量比main函数还要早,全局变量的生存期就是程序的生命周期
//全局变量可以用作函数的通信
//全局变量可以被所有函数所共享
//使用全局变量要注意:
//1、变量名要容易理解,尽可能不要与局部变量重名
//2、避免占内存较大的变量使用全局变量,节约内存
//3、避免全局变量被错误地修改,软件工程中写一个函数若要修改全局变量,
//	则一定要注明修改的原因及目的、值的变化

//函数就是实现某一个功能的模块
 //main函数是c程序的入口点	只能有一个
	//return 直接结束当前函数
	//形参与实参地址不同,不是同一个变量
	//形式参数只有所在函数被调用的时候才新建一个变量,分配内存,存储传递过来的实参的值


void main()
{
	int n = 10;		//同一个块语句下,变量不可以重名
	{
		int n = 20;
		{
			int n = 30;
		}
	}
}



void main()
{
	char ch;
	ch = getchar();				//等待输入一个字符
	//printf("%c\n", ch);
	char ch1 = getchar();		//getchar会把回车当做一个输入字符
	printf("[%c][%c]\n", ch, ch1);
	system("pause");
}


void main()
{
	char str[50] = "notepad";	//定义一个字符数组,存储字符串,最长为50位
	gets(str);					//输入一个字符串到字符串变量
	puts(str);					//输出一个字符串
	system(str);				//执行字符串指令

	system("pause");
}

C语言结构体与函数深度绑定:从内存对齐到链表实战 在编程中,数据结构与算法是构建高效程序的核心基础。结构体作为一种自定义复合数据类型,能够将逻辑相关的数据项封装成整体,而函数则是实现特定功能的独立模块。理解结构体的内存对齐机制对于嵌入式开发、网络通信等场景的性能优化至关重要。通过指针传递结构体参数,可以避免值传递带来的巨大拷贝开销,这是提升程序效率的关键技术。将结构体与函数深度结合,不仅能实现数据的初步封装,更是面向对象编程思想的雏形,在构建学生管理系统、处理传感器数据等实际工程中广泛应用。本文以C语言为例,深入探讨结构体与函数的协同工作方式,涵盖内存对齐 阅读详情

相关推荐

C语言函数模块化设计:从原理到实战,提升代码质量

在软件工程中,模块化设计是一种核心思想,旨在将复杂系统分解为独立、可复用的功能单元。其原理基于‘高内聚、低耦合’原则,即每个模块内部功能紧密相关,模块之间依赖最小化。这种设计的技术价值在于显著提升代码的可读性、可维护性和可测试性,是构建健壮、可扩展软件系统的基石。在C语言编程实践中,函数是实现模块化的基本单元,通过清晰的接口定义、实现封装和多文件组织,能够有效管理复杂度。本文以C语言函数为核心,深入探讨如何利用函数实现模块化程序设计,涵盖函数声明、定义、调用、指针参数、多文件编程等关键概念,并通过一个综合的

weixin_34056162的博客 388

C语言 day4 数组作为主要参数 局部变量 全局变量 变量的存储和引用,内部外部函数

1.数组元素作为函数实参 2.数组名作为函数实参 3.用多维数组名作为函数实参 int a[10];//相当于定义10个变量 a[0]-a[9] 数组元素可以当变量使用。 a[1]=5;//数组元素,当整型变量使用。 a[4]=7;// 数组名作为函数实参 //实参和形参个数相等,类型一致,按顺序对应,一一传递。 //实参变量对形参变量的数据传递是值传递(形参是分配内存的),单向传递。只有实参传...

weixin_45223073的博客 1096

C语言入门指南:从翁恺课程到实战编程的完整学习路径

编程语言是计算机科学的基础工具,其核心在于将人类逻辑转化为机器可执行的指令。C语言作为一门贴近硬件的结构化编程语言,通过直接操作内存和底层资源,帮助学习者深入理解计算机的底层运行机制,从而培养扎实的计算思维和系统编程能力。这种对内存管理、指针操作和性能优化的深刻理解,构成了学习操作系统、编译原理等高级课程的重要基石。在工程实践中,掌握C语言能够为后续学习Python、Java等高级语言打下坚实基础,尤其在嵌入式系统、操作系统内核和高性能计算等领域具有不可替代的价值。本文以浙江大学翁恺老师的经典C语言课程为主

weixin_30263073的博客 400

局部变量和全局变量

形参变量要等到函数被调用时才分配内存,调用结束后立即释放内存。 这说明形参变量的作用域非常有限,只能在函数内部使用,离开该函数就无效了。所谓作用域(Scope),就是变量的有效范围。 局部变量 定义在函数内部的变量称为局部变量(Local Variable),它的作用域仅限于函数内部, 离开该函数后就是无效的,再使用就会报错。例如: int f1(int a){ int b,c; //a,b,c仅在函数f1()内有效 return a+b+c; } int main(){ int m,n; //m,n仅

qq_33182418的博客 428

C 语言复习笔记

本文是东北林业大学计算机技术复试C语言复习笔记,主要涵盖C语言基础知识和程序设计要点。内容分为三部分:C语言概述、数据基础和顺序结构程序设计。第一部分介绍C语言特点(高效、灵活、支持底层操作)和程序结构(预处理指令、函数、变量等)。第二部分讲解常量、变量、标识符规则及基本数据类型,并详细说明各类运算符(算术、关系、逻辑等)的使用方法。第三部分阐述顺序结构程序设计原理,重点说明printf()格式化输出函数的使用。全文通过代码示例辅助理解,适合快速回顾C语言核心概念,但需注意部分内容可能不完全适用于其他用途。

Liujitong的博客 495

DMA IP核的详解与实现

在异步时钟下,s_axi_lite_aclk时钟小于m_axi_sg_clk时钟小于m_axi_mm2s_aclk时钟或者m_axi_s2mm_aclk。同步时钟,m_axi_mm2s_aclk、m_axi_s2mm_aclk和m_axi_sg_clk使用相同的时钟源,s_axi_lite_aclk采用较低的时钟源,同步时钟,m_axi_mm2s_aclk、m_axi_s2mm_aclk和m_axi_sg_clk使用相同的时钟源,s_axi_lite_aclk采用较低的时钟源。

wangjie36的博客 9689

全局变量

C语言提供了全局变量的定义,全局变量也称为:外部变量。全局变量就是定义在函数外的变量。它不属于大括号{}包含的某个代码块,所以,它的作用域不是在某个代码块内,是在整个源程序中。所以,可以在源程序中任何地方访问全局变量。 由于全局变量是属于整个源程序,所以,它的生命周期也是整个程序的生命周期。那么,只要程序运行没有结束,全局变量的生命周期就不会结束。 所以,在整个程序运行的过程中,都可以使用全局变量。 如下是一个程序测试例子: 程序运行结果如下: 可以看到,我们在函数外面定义了全..

LC的专栏 1万+

MySQL 分库分表及其平滑扩容方案

MyCAT不仅仅可以用作读写分离,以及分表分库、容灾管理,而且可以用于多租户应用开发、云平台基础设施,让你的架构具备很强的适应性和灵活性。分表对于一张多行(记录)多列(字段)的二维数据表,又分两种情形(1)垂直分表竖向切分,不同分表存储不同的字段,可以把不常用或者大容量、或者不同业务的字段拆分出去;扩容前每个节点的数据,有一半要迁移至一个新增节点中,对应关系比较简单。此时,四个节点的数据都已完整,只是有冗余(多存了和自己配对的节点的那部分数据),择机清除即可(过后随时进行,不影响业务)。...

m0_71777195的博客 1929

变量的作用域

#include <stdio.h> double price = 200.0; //全局变量 void test01() { printf("%.2f \n", price); // 就是 全局变量 : 200.0 } void test02() { //编译器采用就近原则 double price = 250.0; // 如果把...

qq_39368007的博客 231

载波同步技术(一):BPSK的Costas Loop 载波同步

Author:McCrocodile 2010/11/04          载波的提取在相干解调中往往比较重要,根据信号中是否包含载频分量,载波同步一般也可以分为两种方法。包含载频分量的可以采用窄带滤波或者基本的锁相环环路来实现,不包含的则比较麻烦需要采用特殊的环路实现载波的同步。这里介绍的BPSK的载波恢复就属于后面一种。 对于不包含载频分量的信号载波同步一般有:同相-正交环(就是常说的Costas环)、判决反馈环(几乎可以适用所有调制方式)、同相-正交环衍生环(QPSK松尾环、N相同相-正交环)。

McCrocodile Blog 1万+

西门子S7-200 SMART PLC控制伺服电机

以下是使用西门子S7-200 SMART PLC控制伺服电机的详细程序框架和配置说明,涵盖硬件接线、PLC配置和基本运动控制逻辑。具体实现需根据伺服电机型号(如松下、三菱、台达等)调整参数。通过以上步骤,可实现伺服电机的基础位置控制。实际应用需根据设备机械参数和伺服驱动器手册调整细节。建议在调试时逐步测试脉冲输出和方向信号是否正常。

CHUXUEZHE8210的博客 6425

C语言(四):解锁函数 “积木术”-大一函数总结

本文系统总结了C语言函数的核心知识点,从基础概念到实战应用。主要内容包括:1)函数定义与调用机制,强调模块化编程思想;2)参数传递规则(值传递与数组传参的区别);3)返回值使用规范;4)函数声明与多文件开发;5)static/extern作用域控制;6)数组传参的特殊性;7)常见错误分析与避坑技巧。文章通过典型代码示例讲解嵌套调用、链式访问等进阶用法,并提供了企业级开发规范参考。特别指出函数作为代码复用和程序模块化的核心工具,对提升代码质量和开发效率具有重要意义,是C语言学习的重点内容。

Luminousone的博客 928

PaddleOCR 3.x 最新版使用教程(2025)——从安装到实战身份证识别,一步到位!

本文针对PaddleOCR 3.x大版本更新带来的参数变化和兼容性问题,提供从环境配置到实际应用的全流程解决方案。

qq_58607032的博客 9787

c语言输入当为字符时停止,c语言Tips:

c语言Tips:理论1. 关于printf。可以有返回值,为打印计数(包括空格)。用于检查非屏幕打印打印内容过长时,可在两行间,暂时用一对双引号断开。当要求输出”/n”时,将强制清空缓冲区,在屏幕输出2. 关于scanf。默认时,遇到[空格]、[tab]或[换行符]停止当此输入可用数字表示最大宽度。如:%10S,代表最多扫描10个字符就结束。但如果中间遇到空格等还是要提前结束返回值是成功读入的项目...

weixin_31437143的博客 1904

Windows下用Anaconda安装d2l库避坑指南(附PermissionError解决方案)

本文详细介绍了在Windows系统下使用Anaconda安装d2l库的完整指南,特别针对常见的PermissionError问题提供了多种解决方案。从环境准备到库安装,再到VSCode配置和数据路径处理,帮助读者顺利搭建深度学习环境并运行《动手学深度学习》的代码示例。

3a9bq4r8t2y的博客 225

2ED2410-EM:12v / 24v智能模拟高侧MOSFET栅极驱动器

12v / 24v智能模拟高侧MOSFET栅极驱动器。2ED2410-EM具有输入CPP和CPN的电压比较器。该比较器可用于基于任何模拟电压触发SAFESTATE模式,甚至是外部电压2ED2410-EM。CPP为比较器的正输入,CPN为负输入。VcPREF可以通过微控制器进行调节,也可以通过板载电源芯片(如英飞凌SBC)或简单的分压器在限制VcP(REF)内进行固定,以保持稳定性。使用此比较器允许2ED2410-EM进入SAFESTATE并独立于微控制器关闭MOSFET。

让学习成为一种习惯 2190

朝花夕拾 · C语言 | 函数篇

此外 ,%f 不能接收double型,且双引号里写了什么,在输入时也要相同,所以除了格式控制符之外尽可能少写其他数据。八进制与十六进制也可指定输出域宽,如%8o表示输出八位八进制数,%8x表示输出八位十六进制数;此外,%lo与%lx则可表示以八和十六进制输出long型。在输入整型时,可以使用空格,Tab与Enter隔开两数,除此之外用其他字符则会直接中断输入,舍弃后续读入的数字。域宽输出: 7. %nd 以n位域宽输出,若数据大于n位则以实际位数输出,否则左侧补空。

Vvc_Python的博客 349

Cursor自动生成测试用例

或者把你已有的规则直接复制粘贴到这个文档内(这里我用的是Markdown格式和CSV格式的测试用例生成规则,可以同时生成Markdown和CSV格式的测试用例)。在AI对话框这里,我们可以看到Cursor会逐步来帮我们生成测试用例,先分析识别需求文档,然后生成测试用例,最后会进行质量检查,确保生成的用例符合规范。生成的Markdown格式,可直接导入Xmind,生成思维导图,对应到具体的功能模块看具体的测试点,逻辑会更直观一些。(1)选中规则文档和需求文档:@你的测试用例规则文档@你的需求文档。

十二测试录 2432

C语言函数与流程控制:从封装到实战的编程核心

在编程中,函数是代码复用的核心机制,它通过封装特定功能,实现了‘一处定义,多处调用’的模块化设计。其原理在于将代码块抽象为独立单元,通过参数传递和返回值进行数据交互,这极大地提升了代码的可维护性和可读性。从技术价值看,函数是‘分而治之’思想的体现,是构建复杂程序、告别‘面条式代码’的基石。在应用场景上,无论是数据处理、算法实现还是系统开发,函数都是组织逻辑的基本结构。本文以C语言为例,深入解析了函数定义、声明、调用的完整过程,并结合选择与循环等流程控制语句,通过一个简易计算器的综合实战案例,展示了如何利用函

weixin_33691817的博客 385

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

C/C++基础知识点面试题

目录 一、虚函数的数据结构,如何工作? 二、const与define的区别? 三、指针与引用的区别? 四、指针与数据的区别? 五、不用临时变量实现两个变量的交换 七、一个C++源文件从文本到可执行文件经历的过程 八、C++11新特性 九、C++和C的不同 十、malloc的原理 十一、内存泄漏、野指针 十二、static 十三、union和struct 十四、new与ma...

找个特立不独行的名的博客 2万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

C 语言笔记

/定义长度为5的数组,完全初始化 int i[5] = {1,2,3,};//未完全初始化未初始化的位为0//未初始化,所有位是垃圾值//清零。

2301_79302469的博客 780

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【C 语言md版】从0基础开始到熟练掌握【完整篇,共9部分】

这篇零基础 C 语言教程分九大模块,从计算机存储、进制等前置知识讲起,系统讲解数据类型、IO 函数、流程控制、数组、函数、指针、构造体、动态内存与位运算核心内容,配思维导图、代码实例拆解指针数组、结构体对齐等重难点,最后介绍 printf 与 GDB 两种调试手段,理论结合底层原理,适合新手完整入门 C 语言。

2403_89702754的博客 958

C语言变量本质:从内存视角理解指针、数组与内存管理

在计算机编程中,变量是存储数据的基本单元,其本质是内存中的一块特定区域,通过地址进行访问。理解变量的内存表示是掌握底层编程原理的关键,涉及内存地址、数据大小和存储值三个核心属性。这一原理在C语言中尤为重要,因为它直接关系到指针操作、数组访问和动态内存管理的技术实现。通过深入理解栈、堆和静态存储区的内存布局,开发者能够有效避免段错误、内存泄漏等常见问题,提升代码的健壮性和性能。本文聚焦于C语言变量的内存本质,结合指针运算和调试工具实践,帮助读者构建从内存视角理解编程的底层思维。

weixin_33770878的博客 299

C语言学习路径:从语法到实战项目的完整指南

编程语言作为计算机科学的基础工具,其核心在于通过语法规则将解决问题的逻辑转化为机器可执行的指令。C语言作为一门接近底层的通用程序设计语言,其设计原理强调高效性、灵活性和对硬件的直接控制能力,这使得它在操作系统、嵌入式系统和高性能计算等领域具有不可替代的技术价值。理解C语言的内存管理机制、指针操作和数据结构基础,不仅是掌握系统编程的关键,也为学习C++、Java等高级语言奠定了坚实基础。在实际应用场景中,从简单的学生成绩管理系统到复杂的嵌入式设备开发,C语言都能提供高效的解决方案。本文围绕C语言学习路径,结合

weixin_30562507的博客 421

C语言入门:从零搭建开发环境到掌握核心概念

编程语言是连接人类逻辑与计算机硬件的桥梁,其核心在于将抽象指令转化为机器可执行的底层操作。C语言作为一门经典的编译型、静态类型语言,其设计哲学强调对计算机资源的直接控制与高效利用,这使其成为理解计算机系统工作原理、培养扎实编程思维的重要基石。在技术价值上,掌握C语言能帮助开发者深入理解内存管理、指针操作、函数调用栈等底层机制,这种对系统本质的认知是学习操作系统、嵌入式开发、高性能中间件等高级领域的关键前提。从应用场景看,无论是计算机专业课程学习、嵌入式系统开发,还是追求极致性能的后端服务,C语言都扮演着不可

weixin_33748818的博客 445
上一篇: 验证哥德巴赫猜想
下一篇: 可变参数函数
KnowBug
博客等级 码龄9年 8粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值