学习目标:
快速入门C语言 (笔记后续会跟进)学习内容:
提示:这里可以添加要学的内容
例如:
1、 C语言基本知识点
2、 C语言常用函数
3、 C语言程序实例
文章内容:
C语言基础知识点:
-
数据类型—浮点类型
-
数据类型—void类型
-
数据类型—变量
-
声明变量而不定义变量 extern 例如:extern int i;
在函数外声明,但定义与初始化在函数内
在一个源文件中引用另一个源文件的变量,只需要在被引用的源文件中将变量加上extern关键字的声明
-
左值与右值:
左值(lvalue):指向内存位置的表达式,可以出现在复制号的左侧也可以出现在赋值
号的右侧
右值(rvalue):术语右值指的是存储在内存中某些地址的数值,不能对右值进行赋值
例如:int g=20; 注:g为变量,是左值,可以对其进行赋值,但20是数值型,不可对其进行赋值 -
数据类型—常量:
定义:常量是固定值,在程序执行期间不会改变。这些固定的值,又叫做字面量。
常量可以是任何的基本数据类型,比如整数常量、浮点常量、字符常量,或字符串字面值,也有枚举常量。
常量就像是常规的变量,只不过常量的值在定义后不能进行修改
(1) 整数常量:整数常量可以是十进制、八进制或十六进制的常量。前缀指定基数:0x 或 0X 表示十六进制,0 表示八进制,不带前缀则默认表示十进制 整数常量也可以带一个后缀,后缀是 U 和 L 的组合,U 表示无符号整数(unsigned),L 表示长整数(long)。后缀可以是大写,也可以是小写,U 和 L 的顺序任意
实例:
(2) 字符常量:字符常量可以是一个普通的字符(例如 ‘x’)、一个转义序列(例如 ‘\t’)
或一个通用的字符(例如 ‘\u02C0’)。
在 C 中,有一些特定的字符,当它们前面有反斜杠时,它们就具有特殊的含义,被用来表示如换行符(\n)或制表符(\t)等
转义序列码:
(3)可以分别用#define、const 来定义常量,注意:将常量最好定义为大写字母形式,便于识别
-
存储类:
定义:存储类定义C程序中变量/函数的范围(可见性)和生命周期,这些说明符放在它们所修饰的类型之前,c程序中可用的存储类有:auto、register、static、exterm
auto 存储类是所有局部变量默认的存储类,也可以说auto只能出现在函数内
register 存储类用于定义存储在寄存器中而不是 RAM 中的局部变量。这意味着变量的最大尺寸等于寄存器的大小(通常是一个词),且不能对它应用一元的 ‘&’ 运算符(因为它没有内存位置)。寄存器只用于需要快速访问的变量,比如计数器。还应注意的是,定义 ‘register’ 并不意味着变量将被存储在寄存器中,它意味着变量可能存储在寄存器中,这取决于硬件和实现的限制
static 存储类指示编译器在程序的生命周期内保持局部变量的存在,而不需要在每次它进入和离开作用域时进行创建和销毁。因此,使用 static 修饰局部变量可以在函数调用之间保持局部变量的值。
static 修饰符也可以应用于全局变量。当 static 修饰全局变量时,会使变量的作用域限制在声明它的文件内。
全局声明的一个 static 变量或方法可以被任何函数或方法调用,只要这些方法出现在跟 static 变量或方法同一个文件中
注:函数中的static声明的变量不会因为每次函数的调用而被重置
extern 存储类用于提供一个全局变量的引用,全局变量对所有的程序文件都是可见的。当您使用 extern 时,对于无法初始化的变量,会把变量名指向一个之前定义过的存储位置。
当您有多个文件且定义了一个可以在其他文件中使用的全局变量或函数时,可以在其他文件中使用 extern 来得到已定义的变量或函数的引用。可以这么理解,extern 是用来在另一个文件中声明一个全局变量或函数。
extern 修饰符通常用于当有两个或多个文件共享相同的全局变量或函数的时候 -
运算符:
注意:关系运算符和逻辑运算符,关系是指大小关系,逻辑运算符是指结果真假
算数运算符、
关系运算符、
逻辑运算符、
位运算符、
按二进制进行逐位运算,最后得出结果
赋值运算符、
杂项运算符
注意:C?A:B 解释:如果C为真,则值为A,C为假,则值为B
运算符的优先级:
- 判断:
判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)
循环:
- 数组:
初始化数组:
访问数组元素: 数组名+索引 例如:doouble salary=balance[1];
- 枚举:
可以使数据更为简洁
定义格式: enum 枚举名 {枚举元素1,枚举元素2,……};
注:未赋值的枚举元素的值为前一个枚举元素的值+1
枚举变量的定义:
枚举类型的转换:weekend = ( enum day ) a;
- 指针:
每一个变量都有一个内存位置,每一个内存位置都定义了可使用 & 运算符访问的地址,它表示了在内存中的一个地址
指针的类型应当与所对应的数据的数据类型相同
使用指针的操作:
A. 定义一个指针变量
B. 把变量地址复制给指针
C. 访问指针变量中可用地址的值
指针使用实例:
执行结果:
仅用指针变量名p,指的是变量的存储地址
当用*P所代表的是地址内所存储的值
NULL指针:
在声明指针变量的时候,如果没有确切的地址可以赋值,要给指针变量赋一个NULL值
注:NULL指针是一个定义在标准库中值为0的常量
如下所示:
指针的算数运算:
指针的每一次递增,会指向下一个元素的存储单元
指针的每一次递减,会指向上一个元素的存储单元
指针在递增和递减时跳跃的字节数取决于指针所指变量数据类型长度,比如int就
是四个字节
指针数组:可以建立一个指针数组
指向指针的指针:该指针指向了另一个指针的地址,另一个指针指向的是变量的地址
声明时: int **var;
C语言函数:
一、函数知识点
-
函数组成结构:
在 C 语言中,函数由一个函数头和一个函数主体组成。下面列出一个函数的所有组成部分:
返回类型:一个函数可以返回一个值。return_type 是函数返回的值的数据类型。有些函数执行所需的操作而不返回值,在这种情况下,return_type 是关键字 void。
函数名称:这是函数的实际名称。函数名和参数列表一起构成了函数签名。
参数:参数就像是占位符。当函数被调用时,您向参数传递一个值,这个值被称为实际
参数。参数列表包括函数参数的类型、顺序、数量。参数是可选的,也就是说,函数可能不包含参数。
函数主体:函数主体包含一组定义函数执行任务的语句 -
在程序中,局部变量和全局变量的名称可以相同,但是在函数内,如果两个名字相同,会使用局部变量值,全局变量不会被使用
初始化局部变量和全局变量
当局部变量被定义时,系统不会对其初始化,您必须自行对其初始化。定义全局变量时,系统会自动对其初始化,如下所示: -
得到某个类型或某个变量再特定平台上的大小,用sizeof():例如 sizeof(int)