C语言学习日记(常见关键字)

603a7e159349b8792d2f48779e38509f.jpg

1. auto是自动,一般省略掉了!7d9d16c516c3ff8c6ecd8ed2aefb26ee.jpg

 2.break跳出循环的。通常和for、while、do while、continue一起用。

3.if else、switch和case、default、goto都是和分支有关的。

4.char是类型,和short、int、long、float、double,都是一些类型,也可以当成关键字。enum是枚举、struct是结构体、union是联合体(共用体)、signed有符号的、unsigned无符号的、 sizeof计算大小、typedef类型重命名、void是无(函数的返回类型,函数的参数)和类型有关的

5.const 是常属性。

6.extern声明外部符号的

7.register寄存器、static静态的

8.return函数返回值

注意:定义变量名字的时候不要跟关键字重复。

变量的命名:

1.有意义:int  age、float salary。

2.名字必须是字母、数字、下划线组成不能,不能有特殊字符,同时不能以数字开头。

3.变量名不能是关键字。

一、关键字typedef

类型定义,又叫类型重命名。

1a6fde196b339eae0d90f85422af21d9.jpg

如图中num和num2创建方式一样 ,前面相当于用uint取代了unsigned int 。n和n2也类似这种情况。

二、关键字static

a75edda096c9df1fe6b6f481ceca0924.jpg

1.修饰局部变量。

046eb4ebee734e16805541fda2649f91.jpg

 0bb2f1f970424e85bad0adc6766f4452.jpg

这段代码运行不起来是因为,缺少一个头文件,加上include <stdio.h>就可以了。运行结果如下:

eedc815590b84bd8a2cfbf1d78392da4.jpg

 为什么是10个2因为局部变量a的作用域仅限于定义它的函数或代码块,超出范围后即被销毁。了解局部变量的生命周期对于避免错误和优化代码结构至关重要。

79708de9545e4f2ca2b56b667e13740a.jpg

 为什么不一样了?

在编程中,使用static修饰局部变量会改变其生命周期,使其在离开作用域后不被销毁。这意味着变量的值会保持在下一次调用时继续使用,而不是重新初始化。

使用static修饰局部变量会改变变量的存储位置的。bb37eb58382540e2a1738bc6ff66906e.jpg

 局部变量通常存放在栈区,生命周期短暂。而一旦被static修饰后,变量将转移到静态区,生命周期延长至程序结束。

static修饰局部变量时,它的存储位置和生命周期是非常关键的。被static修饰的变量会在静态区分配空间,而不是在栈区,确保它在整个程序生命周期内保持不变。
static修饰局部变量后,它的值可以改变,但其存储位置不会变。即使变量的值被重新赋值,原始分配的内存空间依然存在,不会被回收或重新分配。
普通局部变量和static变量的主要区别在于存储区域的不同。普通局部变量在栈区分配,而static变量则在静态区存储,这影响了它们的生命周期和作用域。
在程序执行期间,static变量只会创建一次。此变量的地址和存储空间在编译时就已经分配好,后续的调用不会再创建新的空间。

2.修饰全局变量。

上面有include <stdio.h>否则会保错。

cf23be26a98e481b9e0d50da0788cc6b.jpg

 全局变量的定义是指在所有函数外部声明的变量,所有函数均可访问。extern是用来声明外部符号的。使用全局变量时需要注意作用域和链接属性,尤其是在多个源文件中。通过声明外部符号,程序员可以在不同文件中共享全局变量,提高代码的可重用性。

aa80ee931f3f4de09d44215bd3593790.jpg

为什么会报错呢? 

使用static修饰全局变量会改变其链接属性,使其只能在定义的文件内部使用。

在C语言中,使用static修饰全局变量可以改变其连接属性,使其仅在定义的源文件内部可见。我们在使用时就感觉作用域变小了。

static修饰全局变量的主要作用是限制其作用域,使得该变量无法在其他源文件(.c文件)中访问。这意味着该变量只能在其定义的文件内使用,从而避免了潜在的命名冲突。

使用static修饰局部变量时,变量的存储位置也发生变化,变为静态区。这使得局部变量在多次函数调用中保持其值,而不是每次调用时重新初始化。

将全局变量设置为static后,其存储位置仍然在静态区。这种存储方式确保了变量的生命周期在程序运行期间持续存在,而不是在函数调用时创建和销毁。

3.修饰函数。

a1e370a242f840089a9d8cd423c28501.jpg 注意这里出现了警告⚠️ 因为在编程中,函数的声明对于避免编译错误至关重要。通过在使用函数之前声明其存在,编译器可以正确识别函数,从而避免未定义的警告或错误。

编译器在处理代码时是从上到下扫描的,因此在使用函数之前进行声明非常重要。这可以确保编译器在遇到函数调用时已经知道该函数的定义,避免出现未定义的警告。

fbb687e5008e4182b116550f55ef783e.jpg

使用关键字static修饰函数时,该函数的连接属性会变为内部连接。这意味着其他源文件将无法访问这个被static修饰的函数,从而导致链接错误。

2edf10aa79c74fc096a4d70b64105b7c.jpg

 

科普一下:register关键字用于声明寄存器变量,这些变量存储在CPU内部的寄存器中,以提高访问速度。尽管它在现代编程中使用较少,但了解其概念对理解计算机内部结构仍然重要。

a4caea02ef5c490da2366e06f19753ad.jpg

 计算机存储系统的结构呈金字塔形状,存储设备的速度和空间大小呈现出反向关系。越快的存储设备通常空间越小且成本较高,而访问速度慢的设备则相对空间大且成本低。

76941244ab6b4b94bbd3b834b5536409.jpg 编译器的智能化显著提升,能够自动优化变量的使用。通过将频繁使用的变量放入寄存器,编译器极大提高了程序的读写效率,这为编程带来了便利。

计算器变量的使用变得高效,编译器会根据实际情况自动优化变量的存储位置。即使不主动设置变量为计算器变量,编译器也会智能选择将某些变量放入寄存器中进行计算。

现代编译器具有高度的智能化,可以根据寄存器的使用情况来优化性能。当前的编译器能识别空闲寄存器,并将适当的变量自动放入寄存器中,以提升执行效率。

6e7705dae33041d4848ff41ce1e807dd.jpg

 注意:这里关键字只是建议,最终决定权还是看编译器。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值