初识C语言系列-4-数组,操作符,常见关键字(二)

简介: 初识C语言系列-4-数组,操作符,常见关键字


4、常见关键字

最后一部分说一下常见的关键字

注意:关键字不能用来命名!!!

(易错)#define不是关键字

1. auto break case char const continue default do double else enum
2. extern float for goto if int long register return short signed
3. sizeof static struct switch typedef union unsigned void volatile while

这里都是常见的关键字,里面的好多前面也见识过了,这里着重强调几点:

关键字typedef

typedef顾名思义是类型定义,这里理解成类型重命名

1. //将unsigned int 重命名为uint, 所以uint也是一个类型名
2.  typedef unsigned int uint;
3. int main()
4. {
5.  //观察num1和num2,这两个变量的类型是一样的
6.  unsigned int num1 = 0;
7.  uint num2 = 0;
8.  return 0;
9. }

就是如上面这样理解的,自己好好体会一下呗!有时候这样命名可以节约名字的长度哈哈哈哈,是不是很方便呢?

关键字static

在C语言中:

static是用来修饰变量和函数的

1. 修饰局部变量-称为静态局部变量

2. 修饰全局变量-称为静态全局变量

3. 修饰函数-称为静态函数

 

这里面几条我们一条一条给大家分析一下:

1. 修饰局部变量

这个是未用static的

1. #include <stdio.h>
2. void test()//写的一个测试函数
3. {
4.  int i = 0;
5.  i++;
6.  printf("%d ", i);
7. }
8. int main()
9. {
10.   int i = 0;
11.   for (i = 0; i < 10; i++)
12.   {
13.     test();//打印出10次1
14.   }
15.   return 0;
16. }

然后我们看看用static修饰局部变量

1. #include <stdio.h>
2. void test()
3. {
4.  //static修饰局部变量
5.  static int i = 0;//这里表明了i在函数结束的时候并没有被释放掉,而是依旧存在
6.  i++;
7.  printf("%d ", i);
8. }
9. int main()
10. {
11. 
12.     int i = 0;
13.   for (i = 0; i < 10; i++)
14.   {
15.     test();
16.   }
17.   return 0;
18. }

因为没有被释放,所以i不断的增加1,导致上述结果的出现!

明白了没有??

static修饰局部变量改变了变量的生命周期

让静态局部变量出了作用域依然存在,到程序结束,生命周期才结束。

2. 修饰全局变量

分两个.c文件,在add.c文件中命名的数据g_val是全局变量,可以在test.c文件中直接使用

结果如下

完美打印了是不是!!!

哈哈哈

下面我们用一下static修饰一下全局变量

当我们在add.c文件中使用static修饰全局变量时,系统会报错!!!

原因是:当用static修饰全局变量的时候,这个全局变量的外部链接属性就变成了内部链接属性,其他的源文件(.c)就不能再使用这个全局变量了。

3. 修饰函数

最后来看修饰函数的时候:

我们的函数(实现加法)放在add.c

主函数在test.c

这个时候我们运行的结果是这样的

正好实现了目的呢!

那么我们看看static修饰后的:

运行后:

是的,它再次报错了,而结果也是同修饰全局变量时一样,无法解析

这也就是说,这个函数现在进不到主函数了,主函数中的函数相当于没有定义,系统不能够识别。

所以:一个函数被static修饰,使得这个函数只能在本源文件内使用,不能在其他源文件内使用

相关文章
|
1月前
|
C语言
【C语言】break 关键字详解
- `break` 关键字用于提前退出循环体或 `switch` 语句的执行。 - 在 `for`、`while` 和 `do-while` 循环中,`break` 可以帮助程序在满足特定条件时退出循环。 - 在 `switch` 语句中,`break` 用于终止 `case` 代码块的执行,避免代码“穿透”到下一个 `case`。 - 注意 `break` 只会退出最内层的循环或 `switch` 语句,确保在嵌套结构中正确使用 `break` 以避免意外的控制流行为。
110 2
|
1月前
|
传感器 安全 编译器
【C语言】enum 关键字详解
`enum`关键字在C语言中提供了一种简洁而高效的方法来定义一组相关的常量。通过使用枚举,可以提高代码的可读性、可维护性,并减少错误的发生。在实际应用中,枚举广泛用于表示状态、命令、错误码等,为开发者提供了更清晰的代码结构和更方便的调试手段。通过合理使用枚举,可以编写出更高质量、更易维护的C语言程序。
113 2
|
1月前
|
缓存 安全 编译器
【C语言】volatile 关键字详解
`volatile` 关键字在 C 语言中用于防止编译器对某些变量进行优化,确保每次访问该变量时都直接从内存中读取最新的值。它主要用于处理硬件寄存器和多线程中的共享变量。然而,`volatile` 不保证操作的原子性和顺序,因此在多线程环境中,仍然需要适当的同步机制来确保线程安全。
63 2
|
1月前
|
存储 编译器 程序员
【C语言】auto 关键字详解
`auto` 关键字用于声明局部变量的自动存储类,其作用主要体现在变量的生命周期上。尽管现代C语言中 `auto` 的使用较少,理解其历史背景和作用对于掌握C语言的存储类及变量管理仍然很重要。局部变量默认即为 `auto` 类型,因此在实际编程中,通常不需要显式声明 `auto`。了解 `auto` 关键字有助于更好地理解C语言的存储类及其在不同场景中的应用。
50 1
|
1月前
|
C语言
【C语言】continue 关键字详解
`continue` 关键字在 C 语言中用于跳过当前循环中的剩余代码,并立即开始下一次迭代。它主要用于控制循环中的流程,使程序在满足特定条件时跳过某些代码。
64 1
【C语言】continue 关键字详解
|
1月前
|
存储 网络协议 C语言
【C语言】位操作符详解 - 《开心消消乐》
位操作符用于在位级别上进行操作。C语言提供了一组位操作符,允许你直接操作整数类型的二进制表示。这些操作符可以有效地处理标志、掩码、位字段等低级编程任务。
83 8
|
1月前
|
C语言
【C语言】逻辑操作符详解 - 《真假美猴王 ! 》
C语言中有三种主要的逻辑运算符:逻辑与(`&&`)、逻辑或(`||`)和逻辑非(`!`)。这些运算符用于执行布尔逻辑运算。
72 7
|
1月前
|
传感器 算法 安全
【C语言】两个数组比较详解
比较两个数组在C语言中有多种实现方法,选择合适的方法取决于具体的应用场景和性能要求。从逐元素比较到使用`memcmp`函数,再到指针优化,每种方法都有其优点和适用范围。在嵌入式系统中,考虑性能和资源限制尤为重要。通过合理选择和优化,可以有效提高程序的运行效率和可靠性。
94 6
|
1月前
|
C语言
【C语言】return 关键字详解 -《回家的诱惑 ! 》
`return` 关键字在 C 语言中用于终止函数的执行,并将控制权返回给调用者。根据函数的类型,`return` 还可以返回一个值。它是函数控制流中的重要组成部分。
70 2
|
1月前
|
存储 人工智能 程序员
【C语言】一篇通关所有 “关键字”,值得收藏篇!
关键字是编程语言预定义的保留词,代表特定的操作或结构。C语言中的关键字用于定义变量类型、控制语句、存储类、数据类型等。使用这些关键字可以创建函数、控制程序的流程、声明变量和常量等。
75 0