目录
什么是C语言:
C语言是一种计算机语言,计算机语言就是我们人类和计算机交流的语言,常用的计算机语言有C、C++、JAVA、python等等;
C语言来源:
计算机本身是通电的,有正电和负电,分别用1和0代替,计算机也只能识别1和0这样的二进制语言,如果我们需要计算机实现一个功能,那我们就需要去写很多这样的010101010.....,对我们来说,这种做法十分反人类,后来就有人想,某些操作是一定的,那能不能把这些操作对应的二进制语言做一个标识呢,比如加法,就用add来标识一堆的01010101.....,这种类似于add的标识就叫做助记符,使用助记符的语言就叫汇编语言;
但是汇编语言使用起来依旧不符合我们的使用习惯,依旧有很多地方很难使用,于是就出现了B语言,后来又出现了C语言,再后来出现了C++,像C、C++、JAVA、python这些都叫高级语言,当然,B语言已经几乎被遗弃了;
当语言越高级,使用的人就越多,因为使用条件越来越低。
C语言的发展过程:
C语言刚开始是一个很不成熟的语言,C语言的使用方也不同,每个人/组织会对C语言加一些自己特有的东西,这个时候出现了一个问题,C语言不统一,这就导致了一个结果,C语言移植到别的地方,无法使用,无法编译,于是出现了C语言的国际标准,ANSI C,是89年推出的,这个标准也被称为C89,再后来出现了C99、C11的规范;(额外说一句,其实判断一门语言好不好的一个标准,就是看有没有国际标准,如果没有国际标准,那说明不被世界认可呀,那这个语言好还是不好呢,这是个神奇的问题)
C语言文件类型:
.c 源文件
.h 头文件
# include <stdio.h> 包含一个叫做stdio.h的文件,或者说导入 stdio全程是standard input output,标准输入输出
#include <stdio.h>的作用相当于把stdio.h文件中的所有内容都输入该行所在的位置,实际上,这是一种复制粘贴的操作
#include这行代码是一条C预处理器指令,通常,C语言在编译前会对源代码做一些准备工作,也就是预处理
所有的C编译器软件包都提供stdio.h文件
C语言数据类型:
char 字符型 1个字节 (1个字节等于8个比特位的大小)
short 短整形 2个字节
int 整形 4个字节
long 长整形 4/8个字节 (C语言标准规定,只要long类型的大小大于等于int就可以,编译器不同,long类型的大小就不同)
longlong 再长一点的长整形 8个字节
float 单精度浮点型 4个字节
double 双精度浮点型 8个字节
打印函数 printf() :
%d 打印整形
%f 打印浮点型
%lf 打印双精度浮点型
%c 打印字符
%p 打印地址
%x 打印16进制
printf("hello word")
大小函数 sizeof():
可以获取传入参数的大小,计算的是变量或者类型所占用的空间的大小,单位是字节
sizeof(int);
输入函数 scanf():
可以获取键盘输入,回车传入 (& 地址符,代表取地址) 如果使用的IDE是 VS ,可能会报一个警告,甚至告诉你这个函数不能用,那就在源文件开头第一句加上 #define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main() {
int age = 99;
scanf("%d", &age);
printf("%d", age);
return 0;
}
return() :
int main(void)中的int表名,需要返回一个整数,C语言的标准要求这么做,有返回值的C函数需要用 return结尾,其实程序在运行到最后的花括号的时候,也会自动返回0,所以其实也可以省略,但是建议大家养成习惯,不然有返回值的忘了写返回值,那就麻烦咯~
变量与常量:
变量,如字面意思,会发生变化的量,比如年龄,体重等
常量,不会发生变化的量,比如性别,身份证,电话号码等
定义变量的方式:
类型 变量名 = 值;
比如:int price = 99;
注意:在C语言里,C89的规范规定,变量的定义必须在代码的最开始,也就是说,C不像JAVA,C++那样,需要的时候再定义,而是需要你全部定义好,C99及C++等没有这个问题,只要你在使用的时候,这个变量是已经定义好的就OK
变量分类:
局部变量、全局变量;
定义在代码块外部的变量就是全局变量(代码块指的是用 {} 括起来的部分)
定义在代码块内部的变量就是局部变量
例如age就是一个全局变量,price就是一个局部变量
#include <stdio.h>
int age = 100;
int main() {
int price = 99;
printf("%d\n", age);
printf("%d\n", price);
return 0;
}
局部变量的优先级要高于全局变量
#include <stdio.h>
int age = 100;
int main() {
int age = 99;
printf("%d\n", age);
return 0;
}
顺便一提,声明变量可以一次声明多个
int price, age;
比较特殊的变量:指针变量,用来存储一个地址 比如 int* p = &name; 将name的地址存到了变量p里 指针变量是有类型的
变量的作用域:
局部变量的作用域是其所在的局部范围,而全局变量的作用域是整个工程
变量的命名:
命名一定要规范,一定要规范,别什么aa、bb,要见名知意,不行就写个注释,起码得让人知道这是干什么的,这个很重要,本人是做java的,维护一部分公司的老项目,这些项目变量名极其不规范,给我的工作带来了很大的麻烦
可以用小写字母、大写字母、数字和下划线(_)来命名,名称的第1个字符必须是字符或下划线,不能是数字
PS:操作系统和C库经常使用以一个或两个下划线字符开始的标识符,比如_kcab,所以我们最好避免在程序里使用这种名称,操作系统和C库经常使用以一个或两个下划线字符开始的标识符,如库标识符,这些标识符都是保留的,这就意味着,如果你命名不得当,会造成名称冲突
C语言也是一个强类型,强大小写的语言
声明变量的理由:
一些老的语言,都允许直接使用变量,不需要事先声明,但是C不采用这种方式,原因也很简单
1、把所有的变量放在一处,方便使用者和读者查找和理解程序的用途
2、事先声明变量,你就会有一个程序框架计划,有一个整体思路
3、声明变量可以避免一些小错误,如变量名写错,比如1和l,你打错了,这就是两个变量
4、这是最重要的,你不声明变量,连C语言的编译都通不过..........
常量分类:
字面常量
100
const修饰的常变量,相当于java的final,不可变的变量,所以叫常量
const int num = 100;
#define定义的标识符常量
# define STATUS 200;
枚举值常量
enum status{
life,
died
};
C语言的入口:
C语言的入口同java等一样,从主函数入口
注释:
/**/ 多行注释
// 单行注释
注释只是为了让人去写一些自己想写的东西,编译器会忽略掉这部分
C语言的结构: