当前位置:   article > 正文

初识C语言——C语言基础知识(四)_c 语言 不能用作变量名 define auto long

c 语言 不能用作变量名 define auto long

11.常见关键字


关键字就是被C语言本身使用的,不能作其它用途使用的字。关键字不能用作变量名。

1、关键字auto用于说明自动变量,由于变量声明时默认情况下就是自动变量,所以很少使用。
2、volatile(易变的)表示该变量不经过赋值,其值也可能被改变(例如表示时钟的变量、表示通信端口的变量等)。

下面我会对常用的关键字进行解释讲解 对标红进行重点解释

C语言中的关键字
auto:声明自动变量 一般不使用
double:声明双精度变量或函数
float:声明浮点型变量或函数
int:声明整型变量或函数
short:声明短整型变量或函数
long:声明长整型变量或函数
struct:声明结构体变量或函数
break:跳出当前循环
else:条件语句否定分支(与if连用)
switch:用于开关语句
case:开关语句分支
enum:声明枚举类型
register:声明寄存器变量
typedef:用以给数据类型取别名
char:声明字符型变量或函数
extern:声明外部变量是在其他文件中已经定义过了,可在当前文件使用
return:子程序返回语句(可以带参数,也可不带参数) 

union:声明联合数据类型
const:声明只读变量(常变量)
unsigned:声明无符号类型变量或函数
signed:生命有符号类型变量或函数
continue:结束当前循环,开始下一轮循环
for:一种循环语句(可意会不可言传)
void:声明函数无返回值或无参数,声明无类型指针

default:开关语句中的‘其他’分支
goto:无条件跳转语句
sizeof:计算数据类型长度
volatile:说明变量在程序执行中可被隐含地改变

do :循环语句的循环体
while:循环语句的循环条件
static:声明静态变量

register

register用于告诉编译器将变量存储在CPU的寄存器中,以提高程序的执行效率。使用register关键字声明的变量称为寄存器变量。
使用register关键字声明变量时,需要注意以下几点:
1. 不能对寄存器变量使用&运算符,因为寄存器变量并不一定有一个内存地址。
2. 不能对寄存器变量使用sizeof运算符,因为寄存器变量在内存中没有对应的存储空间。
3. 编译器可以选择是否将变量存储在寄存器中,因此不能强制要求把变量存储在寄存器中。


static

static是C/C++中的一个关键字,它可用于修饰变量、函数和类成员。它的作用取决于它所修饰的对象类型。
1. 修饰变量:当static修饰局部变量时,该变量的生命周期被扩展到整个程序运行期间,但作用域仍然是当前的函数体。这意味着该变量只会被初始化一次,而不是每次函数被调用时都会被初始化。当static修饰全局变量时,该变量的作用域被限制在当前文件中,其他文件无法访问
2. 修饰函数:当static修饰函数时,该函数的作用域被限制在当前文件中,其他文件无法访问。这种函数称为静态函数。
 

  1. #include<stdio.h>
  2. void test() {
  3. int i = 0;
  4. i++;
  5. printf("%d", i);
  6. }
  7. void test1() {
  8. static int i = 0;
  9. i++;
  10. printf("%d", i);
  11. }
  12. int main()
  13. {
  14. int i = 0;
  15. for (i = 0; i < 5; i++) {
  16. test();//打印结果为11111
  17. }
  18. printf("\n");
  19. for (i = 0; i < 5; i++) {
  20. test1();//打印结果为12345
  21. }
  22. return 0;
  23. }

在没有static修饰时 i 的值出函数时就会被销毁,每次进入都会重新创建并赋值。

而使用static修饰之后, i 出函数后的值不会被销毁,生命周期也扩展到了整个程序运行期间。

12.#define定义常量和宏

  1. #define MAX 100//定义标识符常量
  2. #define ADD(x,y) ((x)+(y))//定义宏
  3. #include<stdio.h>
  4. int main()
  5. {
  6. int sum = ADD(3, 3);
  7. printf("%d\n", sum);
  8. sum = 6 * ADD(3, 3);
  9. printf("%d", sum);
  10. return 0;
  11. }

13.指针

内存是计算机中很重要的存储器,计算机中所有程序的运行都是在内存中进行的。

为了更有效的使用内存,于是就把内存划分成一个一个的小单元,每个内存单元大小是一个字节。

为了能更高效的访问到每个单元,于是就给内存单元进行编号,这些编号被称为内存单元的地址。(可形象理解为宿舍楼,地址就像是门牌号内存单元就像是房间)

 指针的使用

例如我们存储一个整形数字15,一个整形在内存中占4个字节(一个整形数字占4个内存单元),在取地址时,拿到的是4个字节中第一个字节的地址。

  1. #include<stdio.h>
  2. int main()
  3. {
  4.     int a = 15;
  5.     int* p = &a;//p是指针变量,这里存放的是a的地址,a是整形,那p就是指向一个int类型的指针,int*是指针类型
  6.     *p = 30;//*解引用操作符,*p就是取地址内的数据,*p也就相当于a
  7.     printf("%d", a);//输出结果为30
  8.     return 0;
  9. }

当然由整形为例也可推广到其他类型,指向的是字符型,那指针类型就是:char*。

指针变量的大小

  1. #include<stdio.h>
  2. int main()
  3. {
  4. printf("%d", sizeof(int*));
  5. printf("%d", sizeof(char*));
  6. printf("%d", sizeof(short*));
  7. printf("%d", sizeof(double*));
  8. return 0;
  9. }

运行的结果都是一样的,在32位操作系统是4个字节,在64位操作系统是8个字节

结构体

之前我们了解到数组,使用数组来存储连续的数据,但数组只能存储相同类型数据,而结构体可以存放不同类型的数据。

例如:

  1. struct Stu
  2. {
  3. char name[20];
  4. int age;
  5. char sex[5];
  6. char id[15];
  7. };

结构体初始化

  1. struct Stu s={"zhangsan",20,"男""123456000"};//s是结构体变量,结构体是学生信息,s指代结构体中数据,.是结构体变量访问结构体成员
  2. printf("%s %d %s %s",s.name,s.age,s.sex,s.id);
  3. struct Stu *ps=&s;//ps是指向结构体的指针
  4. printf("%s %d %s %s",ps->name,ps->age,ps->sex,ps->id);//->是结构体指针访问结构体成员

以上便是本期全部内容,初识C语言系列完,后续将持续更新C语言深度解析,本系列是为了使初学者系统了解C语言,便于后续C语言的正式学习。感谢观看!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/578049
推荐阅读
相关标签
  

闽ICP备14008679号