C语言的发展:
二进制语言(0,1)===>汇编语言(借助助记符)===>B语言===>C语言===>Unix系统使用C重写(高级语言)
(美国)国际标准ANSI C --C89/C99
C语言是计算机语言
自然语言:人和人交流的语言 汉语/英语/法语等
计算机语言:人和计算机交流的语言 比如C/C++/JAVA/Python等
人通过计算机语言写的程序,给计算机下达指令,让计算机工作
C语言是编译性语言
源代码是文本文件,需编译器(翻译)+ 链接器(链接)===> 二进制可执行文件
(计算机只能识别二进制指令)
编译:.c文件==>.exe文件==>.obj文件
链接:.obj文件==>Link.exe文件——>可执行文件
编译器:msvc,clang,gcc等
IDE(集成开发环境),集成代码的编写,分析,编译,调试等功能为一体
例如:VS(集成MSVC) , XCode(苹果,集成clang),DevC++(集成gcc)等
VScode: 编辑器,装插件,搭建C/C++开发环境
C语言基本结构
int main()
{
return 0;
}
main函数(主函数)
1.程序的入口,C语言程序从main函数的第一行开始执行
2. 一个项目中只能有1个main函数
3.main函数可以有参数
第一个C语言程序
#include<stdio.h>//包含一个标准的输入输出的头文件
int main()
{
printf("Hello world!");//输出语句
return 0;
}
printf
1. printf(Print-format): 按照格式打印信息
2.是C语言的标准库中提供的现成的函数
3.是库函数,使用要包含头文件
文件中所有 需要输入输出的都要包含该头文件
#include<stdio.h>//包含一个标准的输入输出的头文件
stdio理解: std -- standerd标准 i--input输入 o--output输出
说明:(1)双引号 " " 用于表示字符串
(2)单引号 ' ' 用于表示字符 ,如:'a' , '@' ,错误示范: 'ab'
库函数
函数:1.函数名、参数、返回类型
2.函数功能
C语言标准规定了一组函数,不同编译器厂商根据标准进行实现,提供给程序员使用
库函数的使用要包含头文件:一系列的库函数一般会声明在同一个头文件中
保留字/关键字
1.有特殊意义,保留给C语言使用
2.不能自己创建,不能与自己创建的标志符重复
占位符
%d 打印整数 %c 打印字符
%s打印字符串 %p打印地址
%f 打印小数 (默认打印小数点后6位)
……
ASCII编码
1.计算机中所有数据都是以二进制形式存储
2.编码:给每个字符编一个二进制序列
ASCII编码:(1)128个字符,0~127
(2)a:97 A : 65 对应大小写字符ASCLL码值相差32
(3)数字字符0~9:48~57
(4) \n :10 32是空格
3. 32~127可以从屏幕上打印出来,0~31这32个字符无法打印在屏幕上观察
4. 字符的本质是ASCLL码值
int main()
{
printf("%c\n", 'a');//输出结果 a
printf("%c\n", 97);// a
printf("%d\n",'a');// 97
return 0;
}
5. 如何打印32~127 之间的字符(可见字符)
int main()
{
for (int i = 32; i < 127; i++)
{
printf("%c ", i);
}
return 0;
}
//结果:
// ! " # $ % & ' ( ) * + , - .
// / 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
// @ A B C D E F G H I J K L M N O P
// Q R S T U V W X Y Z [ \ ] ^ _ ` a b
// c d e f g h i j k l m n o p q r s t
// u v w x y z { | } ~
字符串
1. " " 双引号引起来的多个字符 (" "里可以只放一个字符)
2.可以存放在字符数组中
3.打印字符串 %s
4. \0 (1)是一个字符
(2)在字符串末尾隐藏,是字符串结束的标志
(3)printf(打印) , strlen(计算字符串长度)遇到\0就停止
int main()
{
char arr1[] = "abcde";//有\0
char arr2[] = { 'a','b','c','d','e' };//无\0
char arr3[] = { 'a','b','c','d','e','\0'};
printf("%s\n", arr1);//abcde
printf("%s\n", arr2);//abcde+一直打印乱码,直到遇到\0,停止打印
printf("%s\n", arr3);//abcde
return 0;
}
strlen(求字符串的长度)
1.是库函数,要包含头文件 string.h
2.返回的值是size_t类型的,应该使用%zd
3.统计字符串\0之前的字符个数
#include<string.h>
int main()
{
char arr1[] = "abcdef";
char arr2[] = { 'a','b','c','d','e','f' };
printf("%zd\n", strlen(arr1));//6
printf("%zd\n", strlen(arr2));//随机数 没有\0就一直往后找,直到遇到\0停止
char arr3[] = { 'a','b','c','d','e','f','\0' };
printf("%d\n", strlen(arr3));//6
return 0;
}
转义字符
\ 加一个字符:改变原来字符的意思
1.\n换行符 \r光标回到同一行的开头
2.\'表示单引号 \"表示双引号 \\ 表示 \
//打印c:\test\bit
printf("c:\\test\\bit\n");
3.\a 报警(报警声,闪烁)
4.\b光标回退1个字符,若后面还有字符则删除回退的那个字符
若后面 没有字符,则不删除
printf("abcabc\n");//abcabc
printf("abca\bc\n");//abcc 回退一个字符并删除
printf("abca\b\n");//abca 回退一个字符,不删除
5. \t制表符(不是固定长度)
若够8个字符 就按8个字符对齐,若不够8个字符 就用空格补齐
printf("a\tbcdef\tdef\tcc");
//输出结果为a bcdef def cc
\ddd (ddd表示1~3个八进制数字)将\后的8进制数字转换成10进制数字
printf("%c\n",'\130');//X
printf("%c\n",'\77');//?
\xdd ,dd表示2个十六进制的数字
printf("%c\n", '\x55');//U
\0 空字符,没有内容,ASCLL码值为0
语句
1.空语句:一条语句中只有一个分号就是一条空语句
2.表达式语句
int b = 5;
int a = b + 2;//表达式语句
3.函数调用语句
printf("abc\n");//函数调用语句 调用printf函数
int res = Add(a,b);//函数调用语句 调用Add函数
4.复合语句 代码块,可由多条语句构成
for (int i = 0; i < 5; i++)
{
printf("abcccc");
printf("cccabc");
}
其中 { }里的代码就是代码块