计算机语言的发展:人与计算机之间进行交流的语言,从低级语言到高级语言。
首先,机器语言:计算机通电后,计算机对电信号进行存储,由于正电负电之分产生1和0,计算机存储的是1和0的字符串,编程时输入的是二进制语言;其次,汇编语言:将二进制语言封装成助记符,在编程时只需写助记符;现在,高级语言:C语言、Python、Java等
计算机的内存单元:bit:比特,存放一个二进制数,0或1;byte:字节,1 byte = 8 bit
1 kb=1024 byte;1 mb = 1024 kb;1 gb = 1024 mb;1 tb = 1024 gb;1 pb = 1024 tb;
#include <stdio.h>
int main()
{
return 0;
}
#include <stdio.h> :stdio:standand input output,C语言提供的头文件,文件内含有C语言提供的输 入输出函数:scanf、printf
int main():main函数,整个程序的入口,整个项目中必须有且只能有一个main函数;int:main函 数在调用后返回的是整型数据
{}:整个实现某功能的代码块
return 0:返回整型0
数据或字符在计算机中都是以二进制的形式存储的,即ASCLL表
数据类型:char、short、int、long、long long、float、double
不同的数据类型更节省、更高效的使用内存
变量:局部变量:定义在代码块之内的变量。作用域:所属代码块之内的范围
全局变量:定义在代码块之外的变量。作用域:整个项目,同一个文件夹
注:全局变量名与局部变量名不能相同,如果相同的话,局部变量优于全局变量
全局变量在同一个文件夹不同的源文件中引用:extern 变量类型 变量名
常量:字面类型的常量:直接写出来的,如3.14
const修饰的常变量:const 数据类型 变量名 = 值,如:const int num = 2;
define定义的标识符常量:define 标识符 值,如:#define MAX 10;
枚举常量:一一列举,enum
注:const修饰的常变量本质上还是变量,不过具有了常属性
const int num1 = 5; int arr1[num1] = {0};-->不成立;
#define num2 = 5; int arr2[num2] = {0}-->成立
enum Sex { Female,Male,Secret };其中的Female、Male、Secret是常量
enum定义时:enum Sex sex = Female;定义的sex可以修改
字符串:通过 "" 引起来的一串字符 ,"abc"
char arr1[] = {"abc"}; "abc": 'a' 'b' 'c' '\0' ,'\0'是这个字符串的结束标志,arr1长度为4
char arr2[] = {'a', 'b', 'c'}; 没有结束标志'\0',在内存中数到 '\0'为止,arr2长度是随机值
注:'\0'仅仅是一个字符串结束的标志,计算长度时并不会把它计入
'\0':转义字符,作为字符串结束的标志,对应ASCLL中0;字符0:对应ASCLL中的48
转义字符:'\'用来转移其他字符。如:\' 、\'' 、\n 、\\ 、\t
\ddd: ddd表示1~3个八进制的数 ;\xdd: dd表示1~2个十六进制的数
操作符:移位操作符:该数所对应的二进制数向左或向右移动,空出来的用0来补全
位操作符:两个数的二进制对应位:与&:全一则一;或|:有一则一;
异或^:相同为0,相异为1
单目、双目、三目操作符:参与该运算的数据个数
逻辑操作符:0为假,非0为真;逻辑与:&&,全真则真;逻辑或:||,有真则真
下标引用操作符:[]
函数调用操作符:()
取地址操作符:&
计算所占内存字节:sizeof
自增(减):++(--),a++:后置++,先执行表达式,后自增;
++a:先自增,后执行表达式
强制类型转换 :(类型)数据,如:(int)3.14
按位取反:~, 按二进制位进行取反。数据在内存中存的都是它的补码
数据对应的二进制序列最高位表示符号,0表示正数、1表示负数
正数:原码=反码=补码
负数:原码:二进制序列;反码:符号位不变,其他取反;补码:反码+1
条件表达式:exp1 ? exp2 : exp3;
exp1为真时,执行exp2;exp1为假时,执行exp3
关键字:auto:自动变量,auto int num = 2;自动创建,自动销毁;通常省略
register:寄存器变量,建议把变量存储到寄存器中
signed、unsigned:定义的变量有正负之分;通常省略
union:联合体
typedef:“改名卡” ,如:typedef unsigned int u_int; u_int a = 1;
static:修饰局部变量,局部变量生命周期变长
修饰全局变量,全局变量只能在所在的源文件中使用
修饰函数,函数的外部链接属性改变,只能在定义它的源文件中使用
define:define定义标识符常量
define定义宏,#define Max(x,y) (x>y?x:y);
指针:存放变量的地址。int* p = &a; : int*的 * 表示p是指针变量;int:p所指向的变量的数据类型
*p = 20:* 是解引用的操作符;*p:通过指针找到其所指的对象,相当于替身,替身改变, 本体也变
指针变量所占的内存只与操作系统(32位或64位)相关,与其所指的对象数据类型无关
结构体:struct,相当于自定义的数据类型
struct Book {
char name[20];
int price;
};
struct Book b1 ={"C语言程序设计", 50};
printf("书名为: %s;价钱为:%d\n", b1.name,b1.price);
利用指针:struct Book* pb = &b1;
printf("书名为: %s;价钱为:%d\n", pb->name,pb->price);