首页 > 其他分享 >新手学习c语言_第五部分

新手学习c语言_第五部分

时间:2024-06-11 21:30:09浏览次数:12  
标签:count 语言 int 第五 static 修饰 新手 全局变量 链接

静态

static修饰局部变量

一般用在方法中,比如我们建立一个10次的循环,每次调用一个方法,打印内部的变量自增

void add() {
	int count = 0;
	count++;
    printf("%d\n",count);
}
int main() {
	//static修饰局部变量,可使它不会销毁,下次调用还是上次剩下的值
	for (int i = 0; i < 10; i++) {
		add();
	}
	return 0;
}

结果:

 

全都是1,因为每次调用完方法后,变量就跟着方法一起销毁了,每次再调用就得从新初始化赋值

但如果我们加上静态修饰符 static 

void add() {
	static int count = 0;
	count++;
	printf("%d\n",count);
}
int main() {
	//static修饰局部变量,可使它不会销毁,下次调用还是上次剩下的值
	for (int i = 0; i < 10; i++) {
		add();
	}
	return 0;
}

结果: 

变量没有被销毁,每次都保留了下来 

static修饰局部变量,可使它不会销毁,下次调用还是上次剩下的值


static修饰全局变量

全局变量可以被其他文件引入,这样很不安全,所以当我们加上静态修饰符时,使全局变量无法被外部文件链接到,提高安全性
static修饰全局变量,使其他文件链接不到它


static修饰函数

与全局变量一致,使外部文件无法链接到被静态修饰的函数
static修饰函数,使其他文件链接不到它
全局变量和函数本质上具有外部链接属性的,但被静态修饰后,就失去了外部链接属性,变为内部链接属性


typedef 

用于简化定义变量类型的前缀

如: int char double 这些变量 类型都是一个单词,还方便写一点

但 unsigned int 无符号整型 这种变量,每定义一次都要写大量前缀,所以我们可以用typedef来定义

typedef unsigned int unit;

int main() {
	
	unit a = 0;
	return 0;
}

这样用unit定义的变量就与用unsigned int 定义的变量一致,减少代码量 


define 定义

与定义函数效果类似,但简便很多


#define Add(x,y) ((x)+(y))
int main() {
	//#define Add(x,y) ((x)+{y)) 与求和函数一样
	//宏是没有类型的,宏是替换的,函数是传参
	int a = 5;
	int b = 3;
	int c = Add(a,b);
	printf("%d",c);
	return 0;
}

结果:

 

注意宏的参数时无类型的 

 

标签:count,语言,int,第五,static,修饰,新手,全局变量,链接
From: https://blog.csdn.net/qq_69225420/article/details/139606894

相关文章

  • ASP.NET第五章 --案例
    第五章一、1.打开VisualStudio2.新建ASP.NET项目Demo3.创建web窗体,名字叫index14.打开Global.asax.csprotectedvoidSession_Start(objectsender,EventArgse){       Response.Write("开始一个新的会话!Session_Start<br/>");    }prote......
  • C语言中关于Base64编码的基础原理
    Base64编码简述:1.Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。2.Base64,就是包括小写字母a-z、大写字母A-Z、数字0-9、符号"+"、"/"一共64个字符的字符集,(任何符号都可以转换成这个字符集中的字符,这个转换过......
  • 2024年6月11日Arxiv大语言模型相关论文
    cs.CL:在Token经济中的推理:大语言模型推理策略的预算感知评估原标题:ReasoninginTokenEconomies:Budget-AwareEvaluationofLLMReasoningStrategies作者:JunlinWang,SiddharthaJain,DejiaoZhang,BaishakhiRay,VarunKumar,BenAthiwaratkun摘要:......
  • 基于 Transformer 的大语言模型
    语言建模作为语言模型(LMs)的基本功能,涉及对单词序列的建模以及预测后续单词的分布。近年来,研究人员发现,扩大语言模型的规模不仅增强了它们的语言建模能力,而且还产生了处理传统NLP任务之外更复杂任务的新兴能力。这些扩大规模的语言模型被称为大型语言模型(LLMs)。主流的LLMs基......
  • 【C语言】预处理详解(下卷)
    前言紧随上文。命令行定义比如关机命令:shutdown-s-t60其中-s,-t是命令行参数。传的参数不同,效果也不同。许多C的编译器提供了一种能力,允许在命令行中定义符号,用于启动编译过程。如,当我们根据同一个源文件要编译出一个程序的不同版本时,这个特点有些用处。(假如某个程......
  • C语言笔记第14篇:动态内存管理
     1、为什么要有动态内存分配我们已经掌握的内存开辟方式有:创建变量charc=0;inta=0;intarr[10]={0};但是上述的开辟空间的方式有两个特点:空间开辟大小是固定的数组在声明的时候,必须指定数组的长度,数组空间一旦确定了大小不能调整但是对于空间的需求,不仅仅是......
  • C++面向对象语言自制多级菜单
    因为要做一个小应用,需要一个菜单类,在网上找了许久,也没有找到一款心仪的菜单类,索性用C++语言,自制一个命令行级别的菜单类,并制作成库,现记录下来,供以后借鉴。一、特性无限制条目无限制层级用户自定义条目和动作脚本式生成菜单类二、代码实现(一)菜单类菜单类主要负责菜单的......
  • 【Go语言】面向对象编程(二):通过组合实现类的继承和方法重写
    通过组合实现类的继承和方法重写要实现面向对象的编程,就必须实现面向对象编程的三大特性:封装、继承和多态。1封装类的定义及其内部数据的定义可以看作是类的属性,基于类定义的函数方法则是类的成员方法。2继承Go语言中,没有直接提供继承相关的语法实现,可以通过组合......
  • Go 语言中的闭包和递归【GO 基础】
    〇、什么是闭包和递归什么是闭包?闭包就是每次调用外层函数时,临时创建的函数作用域对象。因为内层函数作用域链中包含外层函数的作用域对象,且内层函数被引用,导致内层函数不会被释放,同时它又保持着对父级作用域的引用,这个时候就形成了闭包。所以闭包通常是在函数嵌套中形成的。/......
  • 大语言模型风口来临,普通人如何把握机会?
    随着人工智能技术的飞速发展,大语言模型(如ChatGPT)已成为开发者们关注的焦点。人工智能也正在加速与各行各业融合,催生出大量创新应用,在教育、金融、医疗、法律、设计等诸多领域大显身手。就说说我平常用得比较多的LangChain网站,大语言模型早就渗透到了网站功能设计中,比如下......