一.关于C语言
C 语言是一种广泛使用的计算机编程语言,具有高效、灵活、可移植性强等特点。它是一种中级语言,既可以进行高级语言的编程,又可以进行底层系统编程。C 语言的发展历程可以追溯到 20 世纪 70 年代,由丹尼斯・里奇在贝尔实验室开发。
二.关于运行代码的软件使用
1.放大字体CTRL+鼠标滚轮or工具—选项—环境—字体—颜色—大小。
2.注释①//……//②CTRL+K(选中) CTRL+C(注释)。
三.C语言知识点
1.基本结构
#include<stdio.h>//头文件
int main()
{
} //主体
2.数据类型
基本数据类型有 ①整型②浮点型③字符型
整型:计算机中的一个基本的专业术语,指没有小数部分的数据。例:33
浮点型:浮点数,是属于有理数中某特定子集的数的数字表示,在计算机中用以近似表示任意某个实数。例:33.33
字符:字符指类字形单位或符号,包括字母、数字、运算符号、标点符号和其他符号,以及一些功能性符号。例:'a' '#' (字符要用' '注释出来)"abc"(字符串用双引号)
整型:int short long longlong
浮点:float double
字符:char
接下来详讲数据类型特点:
1.各自所占空间大小:空间大小可理解为数据类型各自所创建的数据空间的大小
char 1byte
int 4byte long 4byte short 2byte longlong 8byte
float 4byte double 8byte
(byte指字节,是数据类型的单位,其转换关系为bit*8→byte*1024→kb*1024→mb*1024→gb*1024→tb*1024→pb)
可用
printf("%zu",sizeof(int));
来计算
2.初始化
int a=0;//此处给变量a进行初始化
long short 所能够包含的字符不同
同理
char arr='a';
float a=66.6;都是各自初始化的方式
【小芝士:%d打印整型 %f打印浮点型 %lf打印double(双精度) %c打印字符 %s打印字符串 %zu打印sizeof字符大小】
3.变量和常量
变量:变量是在程序运行过程中可以改变值的数据对象。变量的定义需要指定数据类型和变量名,如 int a; 表示定义了一个整型变量 a。
常量:常量是在程序运行过程中不能改变值的数据对象。常量可以分为字面常量和符号常量,字面常量是直接在程序中出现的常量值,如 10、3.14 等;符号常量是用 #define 或 const 关键字定义的常量,如 #define PI 3.14。
关于变量
1.分类
局部变量
定义:在函数内部或代码块内部定义的变量称为局部变量。
作用域:局部变量的作用域仅限于定义它的函数或代码块内。一旦函数执行完毕或代码块结束,局部变量就会被销毁,其所占用的内存空间也会被释放。
全局变量
定义:在函数外部定义的变量称为全局变量。
作用域:全局变量的作用域从定义的位置开始,一直到整个源文件结束。如果多个源文件中都定义了同名的全局变量,需要使用外部链接(extern)关键字来明确变量的作用范围。
int main()
{
{ int a=10;
printf(……)//此处可运行
}
}
int main()
{
{ int a=10;
}
printf(……)//此处不可运行
}
静态变量
静态局部变量:
定义:在局部变量前加上static关键字,就成为了静态局部变量。
2.作用域与生命周期
作用域:静态局部变量的作用域与局部变量相同,仅限于定义它的函数内。
生命周期:与局部变量不同的是,静态局部变量的生命周期是整个程序的运行期间。即函数执行完毕后,静态局部变量的值不会被销毁,下次函数调用时,静态局部变量会保留上次调用结束时的值。
关于常量
1.分类
整型常量
十进制整型常量:由数字 0-9 组成,如 123、-45 等。
八进制整型常量:以数字 0 开头,由数字 0-7 组成,如 0123、-045 等。
十六进制整型常量:以 0x 或 0X 开头,由数字 0-9 和字母 A-F(或 a-f)组成,如 0x123、-0X45 等。
浮点型常量
十进制小数形式:由整数部分、小数点和小数部分组成,如 3.14、-2.718 等。
指数形式:由尾数、字母 e 或 E 和指数组成,如 3.14e2(表示 3.14×10²)、-2.718E-3(表示 -2.718×10⁻³)等。
字符常量
普通字符常量:用单引号括起来的单个字符,如 'a'、'B'、'#' 等。
转义字符常量:以反斜杠(\)开头的特殊字符序列,如 '\n'(换行符)、'\t'(制表符)、'\0'(空字符)等。
字符串常量
用双引号括起来的若干个字符序列,如 "Hello, world!"、"C language is powerful." 等。
2.定义常量的方法
(一)使用宏定义
语法:#define 常量名 常量值
示例:
展开过程
在程序中,可以使用 PI 和 MAX_VALUE 来代替具体的数值,提高了程序的可读性和可维护性。
(二)使用 const 关键字
语法:const 数据类型 常量名 = 常量值;
示例:
展开过程
使用 const 关键字定义的常量具有类型检查的优势,可以避免一些潜在的错误。
(三)枚举常量
在头文字下面
enum Color
{ RED;
GREEN; //使得Color未来有三个可取值的常量
BLUE; //默认RED为0 GREEN为1 BLUE为2
};
3.常量的使用注意事项
常量名通常采用大写字母命名,以区别于变量名。
在使用宏定义的常量时,要注意宏展开可能带来的副作用,例如在表达式中使用宏定义的常量可能会导致意外的结果。
const 关键字定义的常量在声明时必须初始化,并且不能在程序的其他地方被修改。
字符串常量存储在常量存储区,不能被修改其内容。试图修改字符串常量会导致未定义的行为。
总之,常量在 C 语言中起着重要的作用,合理地使用常量可以提高程序的可读性、可维护性和安全性。
4.各类转义字符
一、转义字符的概念
在 C 语言中,转义字符是一种特殊的字符序列,以反斜杠(\)开头,用于表示一些无法直接用普通字符表示的特殊字符或控制字符。转义字符在程序中起到了丰富字符表达和控制输出格式的重要作用。
二、常见转义字符及其含义
(一)换行符(\n)
作用:使输出或文本从当前位置移到下一行的开头。
示例:
printf("Hello\nWorld!");
输出结果为:
Hello
World!
(二)制表符(\t)
作用:在输出中插入一个制表位,使后续输出在制表位上对齐。
示例:
printf("Name\tAge\tGender\n");
printf("Alice\t25\tFemale\n");
输出结果为:
Name Age Gender
Alice 25 Female
(三)回车符(\r)
作用:将输出位置移动到当前行的开头,覆盖当前行已有的内容。
示例:
printf("Hello\rWorld!");
输出结果为:World!(因为 “World!” 覆盖了 “Hello” 的前五个字符)
(四)反斜杠(\)
作用:表示一个反斜杠字符本身。
printf("The path is C:\\Users\\Documents.");
输出结果为:The path is C:\Users\Documents.
(五)单引号(')和双引号(")
作用:在字符串中表示单引号和双引号字符本身。
示例:
printf("He said, \"Hello!\"");
printf("It's a book.");
输出结果为:
He said, "Hello!"
It's a book.
(六)空字符(\0)
作用:表示字符串的结束标志,也可以用于初始化字符数组或指针。
示例:
char str[] = {'H', 'e', 'l', 'l', 'o', '\0'};
printf("%s", str);
输出结果为:Hello
5。各类预算符
一、运算符的概念
在 C 语言中,运算符是用于对数据进行操作的符号。通过运算符,可以对变量、常量和表达式进行各种运算,从而实现程序的逻辑功能。
二、C 语言运算符的分类
(一)算术运算符
加法运算符(+):用于两个数相加。例如,int a = 5, b = 3; int c = a + b;,此时c的值为 8。
减法运算符(-):用于两个数相减。例如,int d = a - b;,d的值为 2。
乘法运算符(*):用于两个数相乘。例如,int e = a * b;,e的值为 15。
除法运算符(/):用于两个数相除。注意,如果两个整数相除,结果会截断为整数。例如,int f = a / b;,f的值为 1。
取余运算符(%):用于求两个整数相除的余数。例如,int g = a % b;,g的值为 2。
(二)关系运算符
大于(>):判断左边的值是否大于右边的值。例如,bool h = a > b;,h的值为 true。
小于(<):判断左边的值是否小于右边的值。例如,bool i = a < b;,i的值为 false。
大于等于(>=):判断左边的值是否大于等于右边的值。例如,bool j = a >= b;,j的值为 true。
小于等于(<=):判断左边的值是否小于等于右边的值。例如,bool k = a <= b;,k的值为 false。
等于(==):判断左边的值是否等于右边的值。例如,bool l = a == b;,l的值为 false。
不等于(!=):判断左边的值是否不等于右边的值。例如,bool m = a!= b;,m的值为 true。
(三)逻辑运算符
与(&&):当且仅当两个操作数都为真时,结果为真。例如,bool n = (a > b) && (b < 4);,n的值为 true。
或(||):当两个操作数中有一个为真时,结果为真。例如,bool o = (a < b) || (b > 2);,o的值为 true。
非(!):对操作数取反。例如,bool p =!(a > b);,p的值为 false。
(四)位运算符
按位与(&):对两个操作数的对应位进行与运算。例如,int q = 5 & 3;,5 的二进制为 0101,3 的二进制为 0011,按位与的结果为 0001,即 1。
按位或(|):对两个操作数的对应位进行或运算。例如,int r = 5 | 3;,结果为 0111,即 7。
按位异或(^):对两个操作数的对应位进行异或运算。例如,int s = 5 ^ 3;,结果为 0110,即 6。
左移(<<):将操作数的二进制位向左移动指定的位数。例如,int t = 5 << 2;,5 的二进制为 0101,左移两位后为 010100,即 20。
右移(>>):将操作数的二进制位向右移动指定的位数。例如,int u = 5 >> 1;,5 的二进制为 0101,右移一位后为 0010,即 2。
(五)赋值运算符
简单赋值(=):将右边的值赋给左边的变量。例如,int v = 10;。
复合赋值运算符:如+=、-=、*=、/=、%=等。例如,int w = 5; w += 3;,相当于w = w + 3;,此时w的值为 8。
(六)其他运算符
条件运算符(?:):也称为三目运算符,根据条件选择两个值中的一个。例如,int x = (a > b)? a : b;,如果a大于b,则x的值为a,否则为b。
逗号运算符(,):用于将多个表达式连接在一起,整个表达式的值为最后一个表达式的值。例如,int y = (a++, b++, c = a + b);,先执行a++和b++,然后计算c = a + b,最后y的值为c的值。
sizeof 运算符:用于获取数据类型或变量占用的字节数。例如,int z; printf("%lu", sizeof(z));,输出int类型变量占用的字节数。
三、运算符的优先级和结合性
优先级:不同的运算符具有不同的优先级。例如,乘法运算符(*)和除法运算符(/)的优先级高于加法运算符(+)和减法运算符(-)。在表达式中,优先级高的运算符先进行运算。
结合性:当一个表达式中出现多个优先级相同的运算符时,结合性决定了它们的运算顺序。例如,加法运算符(+)和减法运算符(-)具有左结合性,即从左到右进行运算。
6.数组
一.数组的概念
在 C 语言中,数组是一组具有相同数据类型的元素的集合。数组可以存储多个相同类型的值,并通过索引来访问这些值。数组在内存中是连续存储的,这使得可以快速地访问数组中的。
二.一维数组
(一)定义和初始化
定义:
数据类型 数组名[数组大小];,例如int arr[5];定义了一个包含 5 个整数的一维数组。
初始化:
可以在定义数组时进行初始化,例如int arr[5] = {1, 2, 3, 4, 5};。
如果只初始化部分元素,未初始化的元素会被自动初始化为 0。例如int arr[5] = {1, 2};,则数组中的元素为1, 2, 0, 0, 0。
(二)访问数组
通过数组名和索引来访问数组元素,索引从 0 开始。例如arr[2]
表示访问数组arr
中的第三个元素。
暂时学到这里,之后七天更新其他的学习笔记