1,指针的概念
指针是一种特别的变量,它是存放地址的
假设定义一个指针变量
int * i_pointer
用来存放整型变量i的地址,申明指针用*
i_pointer=&i
&用来取地址,把取得的地址赋值给i_pointer
*取值操作符,申明指针的时候它又不算取值操作符 类型说明符 *变量名,定义指针一定要指定基类型
&取址操作符
变量的地址就叫指针,指针变量就是一个变量
内存地址就是指针,指针就是内存地址
占位符:int类型的占位符为 %d 内存地址的占位符为%#x 换行占位符为\n char类型的占位符为%c
C语言和java相比 C语言没有布尔bool类型和byte类型,java中的String可以用C语言的char[ ]数组来表示
C语言的Bool类型可以用0和非0来表示,0表示false,非0表示true(非0包括正数和负数,负数-1其实也是可以表示true的)
C语言的数据类型对应的长度和java中不一样,好多刚好相反,目前我也记不得了
C语言的void代表空类型,相当与java中的Object类型。C语言不存在println/print,只有一个printf
C语言方法返回多个值不是直接return出去多个值,是间接的返回多个值,通过指针去修改内存单元的数据,间接返回多个值。这种的话形参必须是指针变量,实参必须是地址。
2.多级指针
一级指针定义的时候是一个*,int* address1;二级指针定义的时候是二个*,int** address2;三级指针定义的时候是三个*,int*** address3;四级指针定义的时候是四个*,int**** address4;
多级指针的取值前面加多个*,三级指针取值在前面加三个*,***address3;四级指针取值在前面加四个星*,****address4;多级指针的用途在于结构体,结构体经常使用
指针的长度:4个字节。求长度的函数为sizeof()。
内存管理:
内存管理是C语言的精华,写到这里好激动,此处省略一万个字。。。。。
malloc()
calloc()
free()
结构:
位操作:
~:按位取反,00000010经过这个符号后将变为11111101
&:按位计算布尔值,(10010011)&(00111101)结果为00010001
|:按位计算布尔值,与&相反。(10010011)&(00111101)结果为10111111
^:位异或,如果操作数中有一个为1(但是不都为1),那么结果是1。(10010011)&(00111101)结果为10101110
这个有的变态,按道理说2个位都是1,理论上应该返回真,到^这里就是不能返回1。
《:
》:
C primer plus里面有一句话说的好,二进制的1和0可以用于表示计算机内存和寄存器中位的打开与关闭状态,所以计算机硬件与二进制数字系统紧密相连。虽然C不允许以二进制形式书写数字,但是C识别与二进制相关的八进制和十六进制符号
IDE下载:http://download.csdn.net/download/chengzq/2839285