1,命名方式:
只能用字母,数字,_结合来命名,不能用数字开头
2,C语言的变量类型
常量:123,'a',"hello"
字符型常量:
普通:'a'
转义序列:'\n',代表一个动作
转义字符:'\141',倒转回去变成字符
变量:
相当于一个容器(一块内存)
3,进制
二进制(不能写到代码当中)
八进制:等于3位二进制,作用于权限,以0开头
十六进制:等于4位二进制,作用内存,以0x开头
十进制:人的习惯,以1~9开头
4,C语言的变量存储方式
int(32位)8位等于1字节
short(16)
long(64)
整形数存储:
有符号数字,其中,最高位代表符号位,正数则是0,负数则是1,
并且如果是负数则数据存储按照补码(原码取反+1)的方式进行存储
unsigned:无符号
字符类型:
在CPU中是没有字符这种东西存在的,字符类型都是数字(按照ascii码来存放的(man ascii))
字符类型必须用''括起来
bool类型:
底层里面比较少用到,里面的值就只有true false
ps:
引用的时候需要导入stdbool.h
浮点类型:
通过书本上105页的公式我们得出以下结论:
所有浮点数类型都是精度(包含了所有的位)的:
float:6位
double:15位
long double:18位
5,void:
关键字修饰的地方一般只有以下三个:
void function(void)
{
void *point;
}
void不能单独修饰一个变量名字
6,隐式类型转化:
一般由低精度往高精度转换,一般不会数据丢失
7,强制类型转化:
一般由不同类型或者是高精度往低精度转换,
往往伴随着数据解释方式的更改与数据被切割,慎重使用
8,字符串与字符的对比:
1,字符串所用符号是"",字符类型所用的符号是''
2,字符类型的数据是一个8位整数值(ascii码),
而字符串的数据是一个char *的地址(代表这串字符当中的首个字符的地址)
再加后面有一个'\0'字符作为的结束标志的总数
9,字符串引用的区别:
char *stringp = "h";
//字符串本身就是一个char *的地址数据,
这一句话代表将字符串的地址给了stringp这个指针变量登记起来,
stringp跟"h"所指向的内存空间是一样的
char stringarray[2] = "h";
//将字符串里面的字符内容复制过去stringarray这个数组当中,
并没有将字符串的地址复制过去,
这个stringarray跟"h"他们所指向的内存是不一样的
stringp[0] = 'w';
//不可以这么操作,因为stringp指向了"h"的地址位置,
而"h"是一个字符串常量,不可以更改,一更改就出错
stringarray[0] = 'w';
//可以这么操作,因为stringarray跟"h"所指向的内存不一样,
现在stringarray[0]往里面改变数据是可以的(你改变的只是数据里面的数据)
随堂作业:
1,通过自己的方式将strlen这个函数重写一遍