目录
语言是进行交流的,而人与机器交流,则采用二进制。计算机通电后 有高低电平,通过控制高低电平,从而控制二进制的逻辑0与1。因为单纯二进制编程太麻烦,故涌现出 第二代计算机语言 汇编语言 。因为编程有些麻烦之后更新迭代 ,出现了 第三代计算机语言(高级语言)第三代计算机语言 大体分为两类:面向对象与面向过程。 C语言则是典型的面向过程的语言
- #include<stdio.h>
-
- int main()
- {
- printf("hello world\n\n");
-
- return 0;
- }
# :预处理符号 —— 在程序执行前,需要预处理的语句(预处理运算符)
include : 包含头文件时需要使用的命令
尖括号<> : 编译器到 系统路径下 查找头文件
双引号 “ ”:编译器 首先在当前目录下查找头文件,如果没有找到,再到系统路径下查找
int : main函数的返回值类型 (理论上 void 也可以 ,int 更标准)
main : 函数的名称 , C 语言的入口函数
printf :向终端文件输入字符串的函数
;:C语言语句的结束符号
return : 返回值 0 (正常结束) 返回值 -1 (异常结束)
{ } :函数的语句块
功能:在内存中开辟空间,申请指定大小的空间
种类:内置类型、自定义类型、指针类型、空类型
数据类型 | 所占字节 | 存放类型 |
char | 1 | 字符型 |
int | 4 | 整型数字 |
short | 2 | 短整型数字 |
long | 8 | 长整型数字 |
float | 4 | 单精度浮点型 |
double | 8 | 双精度浮点型 |
数组: 一个或多个相同内置类型的组成
结构体:不同内置类型组合到一起
枚举:记录一种类型的多种实例
共用体:多种内置类型,共用同一块空间
功能:存放不同类型的地址
表示:int* char*
字节:32位操作系统 4字节 64位操作系统 8字节
表示:NULL
字节:0字节
功能:做一个标识,用来找到所开辟的空间
- 数字、字母、_ 组成
- 不可由数字开头
- 不可与关键字重合
注:也不可和函数名重合
变量:程序运行中可以发生改变的量
常量:程序运行中永远不会发生改变的量
格式: <数据类型> 标识符;
例:
int a;
const修饰的常量
例:
const int a=10;
注:因为 a 被 const 修饰 所以不可改变 可看作常量
枚举常量
例:
enum day//枚举结构体 { monday, tuesday, wednesday };
- 在没有赋值时,默认给它的第一个常量赋值为0,后面依次1,2,3
- 枚举值是常量,不是变量。不能在程序中被赋值
宏定义常量
例;
#define money 10
注:后面不能加 ;
功能:向终端输出字符串
格式:printf("需要向中断输入的字符串\n\n");
格式化输出:
字符 字符串 数字 单精度 双精度 地址(指针型) %c %s %d %f %lf %p
功能:程序员从终端输入内容,终端进行获取
格式:scanf("格式控制串",变量地址)
注:输入是,如想循环输入,可利用回车或空格进行循环输入
- #include<stdio.h>
-
- int main()
- {
- int a=0,b=0,c=0; //初始化变量
-
- printf("input a and b of value: ");//请输入
- scanf("%d %d",&a,&b);//输入的值
- printf("\n");//换行
- c=a+b;
- printf("a+b=%d\n\n",c)//输出 a+b 的值
-
- return 0;
- }
算数运算符:+ , - ,* , / ,% ,++ ,--
功能:进行各类数值运算
关系运算符:> ,< ,== ,>= ,<= ,!=
功能:用于比较运算,经常用于条件判断及循环语句
逻辑运算符:&&,||,!
功能:进行逻辑运算,经常用于条件判断及循环语句
位操作运算符:&,|,~,^,<<,>>
功能:对二进制位进行运算,经常用于操作寄存器
赋值运算符:=,+=,-=,*=,/=,%=,&=,|=,^=,>>=,<<=
功能:进行赋值运算
条件运算符:(?:)
功能:用于条件求值,经常用于标志位的状态转换
逗号运算符:,
功能:用于将若干表达式组合成一个表达式
指针运算符:*,&
功能:* 取地址中的内容 & 取变量的地址
求字节数运算符:sizeof
功能:计算数据类型所占字节数
特殊运算符:(),[],->,.
功能:()括号,[] 下标,成员(->, .)
- if格式:
- if (condition)
- {
- //满足 condition 条件的时候,执行的语句
- }
- else if(condition)
- {
- //不满足 if condition 条件的时候,满足 else if condition 执行的语句
- }
- else
- {
- //两 condition 都不满足执行语句
- }
- switch(表达式)
- {
- case 常量1:语句1
- case 常量2:语句2
- default:语句n
- break;
- }
- switch...case:生成一个跳转表来指示实际的case分支的地址
- if...else:遍历条件分支直到命中条件
- 从效率来说:switch 要比 if else 要快
- 从空间来说:switch 要比 if else 占用的空间大
- switch 可以看作是以空间换时间
- while(condition)
- {
- //如果 condition 成立循环执行 其中代码,否则不执行
- }
-
- do
- {
- //先执行一次代码,如果下一次条件不成立,不执行
- }while(condtion);
- for(初始化循环控制变量;循环判断条件;循环变量控制条件)
- {
- //判断条件为真,执行循环体
- }
- break:终止循环
- continue:终止本次循环
- 在内存中,申请一块连续的空间
- 数组为一个自定义数据类型
- 数组由多个相同数据类型组合而成的新数据类型
<数据类型> <标识符>[数据类型的个数];
直接赋值:
int array[5] = {1,2,3,4,5};
通过下标进行赋值:
int arrary[5]={0}; int i=0; for(i=0;i<5;i++) { arrary[i]=i; }问:为什么for语言大部分为 i<5 而不是 i<=4 呢?
答:因为可以一目了然由几个数
- 数组通过下标进行访问,下表从0开始依次增加
- 访问格式:数组名[pos] 注:pos 为数组的下表
- 数组名为数组所开辟的连续空间的首地址
memset()函数
功能:常用来数组清零
头文件:string.h
函数原型: void *memset(void *buffer,int c,size_t count);
参数分析:buffer:数组名 / c:对连续的内置空间设置的某个字符 / count:数组长度
举例:
memset(a,0,sizeof(a));
- 字符串是一组特殊的字符数组,当字符数组的结尾为 ‘\0’ 时,这个字符数组称为字符串
单引号赋值
char str[128] = {'x','a','o','b','a','i','\0'};
双引号赋值
char str[128] = "xiaobai";
注:双引号赋值,结尾会自动加上 '\0'
打印输出
printf("str=%s\n\n",str);
注:打印时只需输入数组名即可
strcpy字符串拷贝
函数原型:strcpy(str1,str2)
功能:将 字符串 str2 复制到 str1 中并覆盖str1的原始字符
举例:
char str[128] = "Hello World"; char str1[128] = "I am XU"; strcpy(str1,str);strlen 字符串长度
函数原型:strlen(str)
功能:计算 str 的长度
举例:
char str[128] = "I am XU"; int len=0; len=strlen(str);
- struct 结构体名称
- {
- //结构体成员
- 类型 <标识符>;
- ……
- };
未完待续…………
- enum 枚举名称
- {
- 实例1,
- 实例2,
- .... ;
- };
未完待续…………
- union 共用体名
- {
- 数据类型 标识符;
- ......;
- };
未完待续…………
- <函数返回值类型> <函数名称> (形式参数列表)
- {
- //函数内容
- return 返回值;
- }
函数名(实际参数列表)
未完待续…………
未完待续…………