目录
一、单位
二、变量
三、常量
四、转义字符
五、操作符
六、指针
七、数组
一、单位
在刚接触编程时,肯定会了解到计算机的存储单位,它们由小到大分别为bit(位)、Byte(字节)、KB(千字节)、MB(兆字节)、GB(吉字节)、TB(太字节)等。同为存储单位,自然也就可以进行换算,其换算关系如下:
1 Byte = 8 bit;
1 KB = 1024 Byte;
1 MB = 1024 KB;
1 GB = 1024 MB;
1 TB = 1024 GB。
二、变量
看完了存储单位,接下来就到了变量了。对于变量,少不了要用它来进行操作,自然也得注意一些使用要点,若是不注意,就极有可能出错,下面是一些注意要点:
1、局部变量的作用域是局部变量所在的局部范围,全局变量的作用域是整个程序;
2、当全局变量和局部变量的变量名相同时,编译器优先使用局部变量;
3、为提高代码质量,在写代码的过程中,应尽可能的避免使用全局变量;
在这,有必要着重讲一下变量的命名规则。首先,变量名只能由字母、数字和下划线组成,其中需要注意的是:变量名不可直接用数字作开头;接下来就是变量名不宜过长,应当简洁明了,同时也应当让人一看变量名就大概清楚该变量的用途;还有就是在对结构体和类进行命名时,每个单词的首字母都要大写,例如:Peo;而对变量和函数进行命名时,则是第一个单词的首字母不用大写,其余单词的首字母要大写,例如:initQueue;当然,也可用下划线来进行命名,例如:init_queue;最后就是变量名不可与关键字重复。
变量的类型有很多,其中就有极其常见的基本数据类型,可分为 char、short、int、long、long long、float、double,接着每一个又可分为 signed 和 unsigned 类型,如:char 又可分为 signed char 和 unsigned char 两种类型。
三、常量
常量也是极其常用的,其包括字面常量、const 修饰的常变量、#define 定义的标识符常量以及枚举常量。
注意:const 修饰的常变量无法用来创建数组。
四、转义字符
转义字符有很多,下面是一些常见的转义字符及含义:
\':用于表示单引号字符;
\'':用于表示双引号字符;
\\:用于表示一个反斜杠;
\a:警告字符;
\b:退格符;
\f:进纸符;
\t:水平制表符;
\v:垂直制表符;
\n:换行;
\ddd:ddd 为 1~3 个八进制数字;
\xdd:dd 为 2 个十六进制数字。
注意:虽然转义字符看起来有很多个字符,但它只能算是一个字符。
五、操作符
操作符可谓是极其的多,分别有:算术操作符(+、-、*、/、%)、移位操作符(>>、<<)、位操作符(&、^、|)、赋值操作符(=、+=、-=、*=、/=、&=、|=、^=、>>=、<<=)、单目操作符(!、-、+、&、sizeof、~、--、++、*、(类型))、关系操作符(>、>=、==、<=、<、!=)、逻辑操作符(&&、||)、条件操作符(exp1 ? exp 2 : exp3)、逗号表达式(exp1, exp2, exp3……, expN)、下标引用操作符( [ ] )、函数调用操作符( ( ) )以及 . 、->。
这里需要注意的是:
1、移位操作符和位操作符只针对整数;
2、sizeof 的后面是类型时,才必须加括号;
3、在 && 连接多个逻辑表达式时,只要前面有一个表达式为假,那后面的表达式就都不用判断了,因为此时整个表达式为假;
4、在 || 连接多个逻辑表达式时,只要前面有一个表达式为真,那后面的表达式就都不用判断了,因为此时整个表达式为真;
5、逗号表达式中只有最后一个表达式的值是真正决定整个表达式的值,前面的表达式只是对最后一个表达式的结果产生影响;
六、指针
指针让代码更便捷且高效,但它也很危险,稍不注意就会 bug 频出,可谓是一把双刃剑。从指针的本质来看,可以发现指针其实也是个变量,也是在内存中开辟一个空间来存放数据,只不过存放的是其他变量的地址。
根据其所存放的是何种变量的地址,就可以知道该指针是什么类型,例如:若存放的是 int 类型的变量的地址,那该指针变量的类型就是 int* 类型。当然,指针变量也可存放指针变量的地址,这时就会分出一级指针、二级指针等类型,一级指针就是刚刚举的例子中 int* 类型的指针变量,存放的地址不是指针变量的地址,至于二级指针则存放的是一级指针的地址,后面更多级的指针以此类推就行了。
既然,指针可以存指针的地址,那自然也可以存数组、函数的地址。由此便可得到数组指针、函数指针。
注意:
1、指针的类型会影响对其解引用时所访问空间大小。例如:int* 类型的指针解引用时,只能访问 4 个字节,而 double* 类型的指针解引用时,可以访问 8 个字节;
2、指针的类型会影响对其加或减正整数时所跳过的地址大小。例如:int* 类型的指针加一时,会跳过 4 个字节的地址,而对double* 类型的指针加一时,会跳过 8 个字节的地址;
3、指针减指针的绝对值是两指针之间的元素个数,只不过执行此操作时,要保证这两个指针指向同一个数组,且两指针的类型相同;
4、无指针加指针这一操作。
七、数组
前面指针可分为一级指针、二级指针等,其实,数组也有类似的分类,如:一维数组、二维数组、三维数组等。对这些数组的理解也可近似于前面指针的理解,如:一维数组中存放的元素不是数组,二维数组存放的元素是一维数组,三维数组中存放的元素是二维数组。还有就是,指针能存放数组的地址,那数组也可存放指针,这时的数组就为指针数组了,例如:int* arr[10]; 。
注意:在使用数组时,要小心数组的越界访问。
附:若有不足,望指出。
^_^感谢^_^