ps做网站导航条高度,产品推广员,python设计网页,wordpress 评论页面一#xff1a;C语言常见概念
1.认识C语言#xff1a;
C语言是人和计算机交流的语言
C语言是一门面向过程的语言#xff0c;而C#xff0c;Java#xff0c;Python等是一门面向对象的语言
软件开发#xff08;项目#xff09;#xff1a;面向过程面向对象
…一C语言常见概念
1.认识C语言
C语言是人和计算机交流的语言
C语言是一门面向过程的语言而CJavaPython等是一门面向对象的语言
软件开发项目面向过程面向对象
操作系统WindowsLinux等 系统编程
计算机网络 网络编程网络协议
数据库MySQL
数据结构与算法
2.C语言的历史
C语言最初是作为Unix系统的开发工具而发明的 Unix系统是开源的操作系统 -- Linux操作系统 1969年发明了B语言 – 1972年C语言现世 – 1973年Unix系统使用C语言重写在此之前Unix系统是用汇编语言写的 – 1988年美国国家标准协会ANSI正式将C语言标准化
3.编译器
一编译和链接
1. C语言是一门编译型计算机语言其源代码都是文本文件本身无法执行必须通过编译器的翻译和链接器的链接生成二进制的可执行文件计算机能够识别的是二进制的指令才可执行。
2. C语言需要依赖编译器将计算机语言转换成机器能够执行的机器指令
3. C语言代码是放在 .c 文件中的想要得到最终运行的可执行程序中间要经过编译和链接的2个过程
4. C语言把 .c 为后缀的文件称为源文件把 .h 为后缀的文件称为头文件
二集成开发环境(IDE)用于提供程序开发环境的应用程序一般包括代码编辑器编译器调试器和图形用户界面等工具。集成了代码编写功能分析功能编译功能调试功能等一体化的开发软件服务套
一个工程一般都会有多个源文件组成 如下图 注意 1. 每个源文件 .c 单独经过编译器处理生成对应的目标文件(.obj为后缀的文件)
2. 多个目标文件和库文件经过链接器处理生成对应的可执行程序(.exe文件)
4.第一个C语言程序
#include stdio.h
int main()
{printf(Hello C语言);return 0;
} 代码运行的快捷键CTRL F5
代码调试F10
字体大小调节CTRL 鼠标滚轮
代码注释CTRL K C
取消代码注释CTRL K U
注意 1. 一条语句结束后要有分号
2. 代码中不能使用中文符号
3. 项目名称最好要见名知意不要使用中文不要使用特殊字符不要使用空格
5.main()函数
每个C语言程序不管有多少行代码都是从main()函数开始执行的main()函数是程序的入口因此main()函数也被叫做主函数
main()前面的int表示main()函数执行结束的时候返回一个整数类型的值
所以在main()函数的最后写return 0; 正好前后呼应
main()函数是程序的入口 main()函数有且仅有一个 一个项目中可以有多个 .c 文件但是只能有一个main()函数因为程序的入口只能有一个
6.库函数
为了不再重复实现常见的代码让程序提升开发效率C语言标准规定了一组函数这些函数再由不同的编译器厂商根据标准进行实现提供给程序员使用。这些函数组成了一个函数库被称为标准库这些函数也被称为库函数在这个基础上一些编译器厂商可能会额外扩展提供部分函数这些函数其它的编译器不一定支持
一个系列的库函数一般会声明在同一个文件中所以库函数的使用要包含对应的头文件
7.关键字
C语言中有一批保留名字的符号这些符号被称为保留字或者关键字
关键字都有特殊的意义是保留给C语言使用的在创建标识符变量的时候是不能和关键字重复的关键字也是不能自己创造的 C语言的32个关键字 注意 在 C99 标准中加入了 inlinerestrictBoolComploex等关键字不过使用最多的还是上面的32个关键字
8.字符和ASCII编码
在键盘上敲出的各种符号如ak#5等这些符号都被称为字符在C语言中字符是用单引号括起来的如ak#5等
在计算机中所有的数据都是以二进制的形式存储的而我们给每一个字符所编写的二进制序列这个就叫做编码后来为了方便大家相互通信不造成混乱美国国家标准协会ANSI出台了一个标准ASCII编码将键盘上敲出的所有字符都进行了固定的编号C语言中采用字符就遵循了ASCII编码的方式 ASCII编码表 字符AZ的ASCII编码值是从6590字符az的ASCII编码值是从97122对应的大小写字符a和A的ASCII编码值的差值是32数字字符09的ASCII编码值是从4857换行\n的ASCII编码值是10在这些字符中ASCII编码值0~31的这32个字符是不可打印字符无法显示到屏幕上观察
//将字符32~127这些可打印字符在屏幕上打印出来
#include stdio.h
int main()
{int i 0;for(i 32;i 127;i){if(i % 16 0)printf(\n);printf(%c,i);}return 0;
} 注意 1. 字符的打印格式使用占位符 %c 来指定
2. 要想表示字符一定是要单引号括起来的
9.字符串和\0
C语言中使用双引号括起来的一串字符就被称为字符串如乔越
字符串的打印格式使用占位符 %s 来指定
双引号引起来的叫字符串单引号引起来的才叫字符字符串是一串字符里面是由一个或者多个字符组成的也可以没有字符当里面一个字符都没有的时候叫做空字符串
汉字是占两个字符的所以单引号不能包裹汉字只能包裹单个字符而双引号可以包裹汉字 打印字符串有两种方式 //第一种
#include stdio.h
int main()
{printf(haha\n);return 0;
}//第二种
#include stdio.h
int main()
{printf(%s,haha);return 0;
} C语言字符串中在字符串的末尾还隐藏着一个字符\0这个\0是字符串的结束标志
例如 字符串abcdef实际上看到的是6个字符abcdef 但是实际上在其末尾还隐藏一个 \0 的转义字符\0是字符串的结束标志所以在使用库函数printf()打印字符串或strlen()计算字符串长度的时候遇到 \0 就自动停止了 C语言也可以把一个字符串放在一个字符数组中数组就是一组数据 #include stdio.h
int main()
{//C语言中用char类型来表示字符//char qwe[3];//表示这个数组里面可以放3个字符//char qwr[5];//表示这个数组里面可以放5个字符char qwe[] abc;//这个的里面有\0char qwr[] {a,b,c};//这个的里面没有\0printf(%s\n,qwe);//正常输出printf(%s\n,qwr);//会出现乱码return 0;
}图示 注意 因为qwe遇见\0就终止运行了所以打印的结果只有abc而qwr后面没有\0终止所以会继续往下运行直到遇见\0终止打印所以打印结果会有其它内存空间的内容
#include stdio.h
int main()
{char qwr[] {a,b,c,\0};printf(%s\n,qwr);//输出正常不再出现乱码return 0;
}#include stdio.h
int main()
{char asd[] abc\0def;printf(%s\n,asd);//只会打印abc,因为后面遇到了\0终止return 0;
}库函数strlen()用来返回一个字符串的长度 #include stdio.h
#include string.h //strlen库函数的头文件
int main()
{int len strlen(abc); //用int类型的变量去接收然后返回这个字符串的长度printf(%d\n,,len);return 0;
} 注意 上述代码会出现警告因为strlen()返回的类型本质是size_t而size_t这个类型是专门用来接收求长度的函数的返回值的并且在strlen()这个库函数时要包含头文件
#include stdio.h
#include string.h //strlen库函数的头文件
int main()
{size_t len strlen(abc); //用size_t类型的变量去接收然后返回这个字符串的长度printf(%d\n,,len);return 0;
}10.转义字符
转义字符 – 转变了原来意思的字符
例如\n是一个转义字符表示换行的意思可以简单的理解为 \ 让n的意思发生了转变n本来只是一个普通的字符被 \ 转义为换行的意思 C语言中的转义字符 转义字符描述?在书写连续多个问号时使用防止它们被解析成三字母词在新的编辑器上无法验证了\ ’用于表示字符常量 ’\ ‘’用于表示一个字符串内部的双引号\ \用于表示一个反斜杠防止它被解释为一个转义序列符\a警报使终端发出警报声或出现闪烁或者两者同时发生\b退格键光标回退一个字符但不删除字符\f换页符光标移到下一页在现代系统上已经无法验证了行为改成类似于\v\n换行符\r回车符光标移到同一行的开头\t制表符光标移到下一个水平制表位通常是下一个8的倍数\v垂直分隔符光标移到下一个垂直制表位通常是下一行的同一列\ddd字符的八进制表示形式ddd表示1~3个八进制的数字 如\130 – 表示字符X\xdd字符的十六进制表示形式dd表示2个十六进制的数字 如\x30 – 表示字符0\0null字符没有内容用于字符串的结束标志其ASCII编码值是0
#include stdio.h
int main()
{printf(%c,\);// \:打印一个单引号printf(%s,\);// \:打印一个双引号printf(C:\\test\\test.c);// \\:防止被转义printf(\a);// \a:触发系统蜂鸣器警报printf(abc\bdef);//会打印abdef,\b:将c删除退了一格printf(ab\tdef\tq\txxxxx);// \t:对齐到\t的宽度return 0;
}#include stdio.h
int main()
{printf(%c,\130);// 将130这个八进制数字转换为十进制数字0*8**03*8**11*8**2880乘8的0次方3乘8的1次方1乘8的2次方88而88在ASCII表上对应的字符就是Xprintf(%c,\x30);// 将30这个十六进制数字转换为十进制数字0*16**03*16**1480乘16的0次方3乘16的1次方48而48在ASCII表上对应的字符就是0return 0;
} 注意 一个转义字符算是一个字符
当求字符长度的时候如果有 \ 后面加上其它的字符的情况那么也会被默认为是一个转义字符虽然无作用但会将它们算作成一个字符
#include stdio.h
#include string.h
int main()
{size_t len strlen(c:\test\123.c);printf(%d\n,len); //最后的结果字符数量是9.因为一个转义字符只能算是一个字符\t;\123return 0;
}#include stdio.h
#include string.h
int main()
{size_t len strlen(c:\te\st\123.c); //答案也是9因为C语言把\s整体当成了一个转义字符printf(%d\n,len); return 0;
}11.语句和语句分类
C语言的代码是由一条一条的语句构成的C语言的语句可分为以下五类
1. 空语句
2. 表达式语句
3. 函数调用语句
4. 复合语句
5. 控制语句
一空语句
空语句是最简单的一个分号就是一条语句也就是空语句
空语句出现的地方是这里需要一条语句但是这条语句不需要做任何事就可以写一个空语句
#include stdio.h
int main()
{; //空语句return 0;
}二表达式语句
表达式语句就是在表达式的后面加上分号
#include stdio.h
int main()
{int a 10;int b 0;b a b; //表达式语句printf(%d,b);return 0;
}三函数调用语句
在函数调用的时候也会加上分号就是函数调用语句
#include stdio.h
int Add(int x,int y)
{return xy;
}
int main()
{printf(haha\n);// 函数调用语句int ret Add(2,3);// 函数调用语句return 0;
}四复合语句
复合语句就是代码块一对大括号中的代码就构成一个代码块也被称为复合语句
#include stdio.h
void print(int arr[],int sz)//函数的大括号中的代码也构成复合语句
{int i 0;for(i 0;i sz;i){printf(%d,arr[i]);}
}
int main()
{int i 0;int arr[10] {0};for(i 0;i 0;i)//for循环循环体的大括号中的就是复合语句{arr[i] 10 - i;printf(%d\n,arr[i]);}return 0;
}五控制语句
控制语句用于控制程序的执行流程以实现程序的各种结构方式
C语言支持的三种结构顺序结构选择结构循环结构
C语言有九种控制语句可分为以下三类
条件判断语句分支语句if语句switch语句循环执行语句do while语句while语句for语句转向语句break语句goto语句continue语句return语句
12.注释
注释是对代码的说明编译器会忽略注释也就是注释对代码没有任何影响 注释是给人自己或者他人看的 好的注释可以帮助理解代码但不要过度注释不写没有必要的注释 注释的两种形式 第一种
/*我是第一种注释我还是多行注释
*/第二种
//我是第二种注释是单行注释 注意 第一种的注释风格是不支持嵌套注释的也就是注释里面还有一个这样的注释
选择结构循环结构
C语言有九种控制语句可分为以下三类
条件判断语句分支语句if语句switch语句循环执行语句do while语句while语句for语句转向语句break语句goto语句continue语句return语句
12.注释
注释是对代码的说明编译器会忽略注释也就是注释对代码没有任何影响 注释是给人自己或者他人看的 好的注释可以帮助理解代码但不要过度注释不写没有必要的注释 注释的两种形式 第一种
/*我是第一种注释我还是多行注释
*/第二种
//我是第二种注释是单行注释 注意 第一种的注释风格是不支持嵌套注释的也就是注释里面还有一个这样的注释