计算机语言:人类与计算机交流的语言
调取库include<stdio.h>
主函数int main()
最终约定return 0;
每一行结束记得加;
数据单位bit type=8:1
bit kb=1024:1
kb mb gb tb pb以此类推
数据类型int整数float单精度浮动数(带小数点)long长整数 long long更长的整数short短整数char字符数据类型double双精度浮动数
字节分别是4 4 4 8 2 1 8
数据类型用于创建变量
变量和常量
变量:局部变量和全局变量
全局变量和局部变量可以名字相同,优先局部
变量初始化,不初始化会随机值
scanf输入函数,printf输出函数
scanf不能用的时候在【第一行】加复制的东西
在vs的安装路径下有一个文件newsc++file.cpp的文件,创建新的.c或.cpp文件都是对这个文件的拷贝
变量的作用域和生命周期
声明来自外部的符号extern ;
常量:字面常量;const修饰的常变量;define定义的标识符常量;枚举常量
单引号引字符,双引号引字符串
字符串的结束标志是\0
转义字符:转变字符的意思
%d打印整型
%c打印字符
%s打印字符串
%f打印float类型的数据
%lf打印double类型的数据
%p打印地址
\'单引号转义 \"双引号转义 \\ \的转义
\n换行
\a蜂鸣
\t水平制表符就是键盘上的tab
\r回车
\ddd ddd表述1-3个八进制数字,例如\130打印出来是X,也就是130十进制88的ascii码
\xdd dd表示1-2个八进制数字,如\x30打印出来0
ASCII编码
//注释,写代码加上必要的注释/* */是C语言的注释风格//是c++的注释风格
选择语句
if()
{}
else
{}
和switch语句
循环语句
while循环,for循环,do while循环
while()
{
}
数组:一组相同类型元素的集合
整型数组int arr[个数]={1,2,3...};
元素有序号0,1,2,3,...叫数组的下标,下标从0开始
数组如果初始化,可以不指定数组的大小,比如int arr[]={1,2,3}这个数组有三个元素
int arr[10]={0}后面九个元素默认初始化为0
VS不支持变长数组,数组的个数必须是常量或者常量表达式
操作符
算术操作符+ - * /(整除) %(取模)
除号两端都是整数的时候执行整数除法,如果两端有一个浮点数,执行的就是浮点数的除法
取模两端只能是整数
移位操作符<< >>
位操作符& ^ |
赋值操作符= += -= *= /= ^= |= >>= <<=
a+=3即a等于a加3
++就是先赋值再加1,例如int a=10;int b = a++;相当于int b=a;a=a+1;
C语言中0表示假非0表示真
c语言中小数默认为double类型
单目操作符,!逻辑反操作,-负值,+正值,&取地址,sizeof操作数的类型长度,以字节为单位。()强制性转换,int a=(int)3.14就是把3.14强制转换为整型也就是3
关系操作符>,>=,<,<=,!=不相等,==相等
逻辑操作符&&逻辑“与”,||逻辑里的“或”,就是高中数学里的且和或
条件操作符(三目操纵符) exp1?exp2:exp3有三个操作数,1为真,则2对3不对。1为假,则2错3对
a>ba:b如果a>b则输出a,如果b>=a则输出b
逗号表达式是逗号隔开的一串表达式,特点是从左向右依次计算,结果是最后一个表达式的结果
d=(c=a-2,a=b+c,c=c-3);输出的就是最后一个得到的结果
下标引用操作符[](),->
解引用操作符*,*p通过p中存放的地址,找到p所指代的变量。&取地址,*通过地址反过来找对象
常见的关键字,关键字无法自己创建
auto。break跳出循环。char,short,int,long,long long,float,double。
const常属性。continue用于循环......
关键字typedef类型定义
typedef unsigned int uint;
unsigned int num =0;
uint num1=0;这里的unsigned int 和uint是一模一样的
static
修饰局部变量(影响了局部变量的生命周期);修饰全局变量(静态全局变量,全局变量的外部连接属性变成内部连接属性,使得其他源文件不能使用,作用域变小了);修饰函数(和全局变量类似)
define定义常量和宏
指针(也就是所谓内存单元的地址,编号)
内存会划分为内存单元,每个单元都有一个编号,一个单元大小为1字节
创建变量要向内存申请空间int a=10;就是向内存申请4个字节来存储10;
a的地址为存储的4个字节中的第一个
16进制是0~9,abcdef
如果a的地址是0000 0000 0000 0000 0000 0000 0000 1010二进制
转换为16进制即0 0 0 0 0 0 0 a
写出来就是0x 00 00 00 0a
int a=10;
int * p=&a;
*说明p是指针变量,指针变量用来存放地址
int说明p指向的对象是int类型的
指针变量的大小取决于存放地址所需要的空间
结构体就是把单一类型组合在一起
struct Stu
{
char name[20];
int age;
char sex[10];
};
int main()
{
struct Stu s={"muqiao",18,"nan"};
printf("%s %d %s\n",s,name,s,age,s,sex);
return 0;
}
结构体对象s,成员名:s,name,s,age
结构体的指针变量->成员名