23/3/2学习记录(c语言复习-2)

1. 变量的声明有两种情况:1、一种是需要建立存储空间的。例如:int a 在声明的时候就已经建立了存储空间;

2、另一种不需要建立存储空间,通过使用extern关键字声明变量名而不定义它。 例如:extern int a 其中变量 a 可以在别的文件中定义的。

2. C存储类:auto、register、static、extern

auto:存储类是所有局部变量默认的存储类。定义在函数中的变量默认为 auto 存储类,这意味着它们在函数开始时被创建,在函数结束时被销毁auto 只能用在函数内,即 auto 只能修饰局部变量。

register:用于定义存储在寄存器中而不是 RAM (主存)中的局部变量。这意味着变量的最大尺寸等于寄存器的大小(通常是一个字),且不能对它应用一元的 '&' 运算符(因为它没有内存位置)。register 存储类定义存储在寄存器,所以变量的访问速度更快,但是它不能直接取地址,因为它不是存储在 RAM 中的。在需要频繁访问的变量上使用 register 存储类可以提高程序的运行速度。

static:指示编译器在程序的生命周期内保持局部变量的存在,而不需要在每次它进入和离开作用域时进行创建和销毁。因此,使用 static 修饰局部变量可以在函数调用之间保持局部变量的值。static 修饰符也可以应用于全局变量。当 static 修饰全局变量时,会使变量的作用域限制在声明它的文件内。全局声明的一个 static 变量或方法可以被任何函数或方法调用,只要这些方法出现在跟 static 变量或方法同一个文件中。静态变量在程序中只被初始化一次,即使函数被调用多次,该变量的值也不会重置。

extern:用于定义在其他文件中声明的全局变量或函数。当使用 extern 关键字时,不会为变量分配任何存储空间,而只是指示编译器该变量在其他文件中定义。 extern存储类用于提供一个全局变量的引用,全局变量对所有的程序文件都是可见的。当您使用  extern 时,对于无法初始化的变量,会把变量名指向一个之前定义过的存储位置。当您有多个文件且定义了一个可以在其他文件中使用的全局变量或函数时,可以在其他文件中使用  来得到已定义的变量或函数的引用。可以这么理解, extern是用来在另一个文件中声明一个全局变量或函数。

3. 作用域规则:局部变量、全局变量、形式参数

局部变量:在某个函数或块的内部声明的变量称为局部变量。它们只能被该函数或该代码块内部的语句使用。局部变量在函数外部是不可知的。下面是使用局部变量的实例。全局变量保存在内存的全局存储区中,占用静态的存储单元;局部变量保存在栈中,只有在所在函数被调用时才动态地为变量分配存储单元。当局部变量被定义时,系统不会对其初始化,您必须自行对其初始化。定义全局变量时,系统会自动对其初始化

全局变量:全局变量是定义在函数外部,通常是在程序的顶部。全局变量在整个程序生命周期内都是有效的,在任意的函数内部能访问全局变量。全局变量可以被任何函数访问。在程序中,局部变量和全局变量的名称可以相同,但是在函数内,如果两个名字相同,会使用局部变量值,全局变量不会被使用。static被用来控制变量的存储方式和可见性

形式参数:函数的参数,形式参数,被当作该函数内的局部变量,如果与全局变量同名它们会优先使用。

4. C数组

C 语言不允许返回一个完整的数组作为函数的参数。但是可以通过指定不带索引的数组名来返回一个指向数组的指针。

数组名是一个指向数组中第一个元素的常量指针。

double *p;
double balance[10];
p = balance;

一旦把第一个元素的地址存储在 p 中,您就可以使用 *p、*(p+1)、*(p+2) 等来访问数组元素。

5. srand((unsigned)time(NULL))是初始化随机函数种子:

是拿当前系统时间作为种子,由于时间是变化的,种子变化,可以产生不相同的随机数。计算机中的随机数实际上都不是真正的随机数,如果两次给的种子一样,是会生成同样的随机序列的。 所以,一般都会以当前的时间作为种子来生成随机数,这样更加的随机。使用时,参数可以是unsigned型的任意数据,比如srand(10);如果不使用srand,用rand()产生的随机数,在多次运行,结果是一样的。头文件<time.h>

6. C枚举(enum) enum 枚举名 {枚举元素1,枚举元素2,.....}

在C 语言中,枚举类型是被当做 int 或者 unsigned int 类型来处理的,所以按照 C 语言规范是没有办法遍历枚举类型的。

7. C指针

指针也就是内存地址,指针变量是用来存放内存地址的变量。

c编程学习记录 文章被收录于专栏

为了华为od机试刷题学习记录

全部评论
谢谢老哥分享
1 回复 分享
发布于 2023-03-05 11:45 陕西
这么晚还不睡啊,朋友
1 回复 分享
发布于 2023-03-05 11:48 河北

相关推荐

评论
1
1
分享
牛客网
牛客企业服务