值和类型:
在具体的某个内存地址上,存储的都是01代码。而这些01代码具体被指定为什么值是需要视其具体类型为什么的,这样这些01代码才能够被解释为正确的值。
指针变量的内容
指针变量存储的值是另外某个内存区域的地址,并且也要认识到这个指针变量自身也有一个地址。
间接访问操作符
通过一个指针访问它所指向地址承载的内容的过程称为间接访问或解应用指针。
未初始化和非法的指针(非法地址?)
NULL指针
在还不确定某个指针到底指向哪里的时候,可以给指针赋值为NULL(也可以赋值为0,应为NULL就是0的宏定义,而地址空间的0是不会被使用的)。
void指针
void代表无类型,不能定义变量,诸如void a这种变量定义肯定是错误的;
而void *则可以代表任何类型的指针,可以把任何类型的指针赋值给void * 类型的变量的 ;
对void *的变量不能直接解引用,而先要用强制转换为具体类型再解应用,不然不知道如何解释这个内存地址中的值;
(tips:字符串类型实则可以不强制转换而世界对void解引用,这是因为系统默认对地址使用字符串形式的解引用,但我们还是不要依赖这个特性,而是继续采用标准的先强制转换再解引用)
指针常量
(假定100代表a的地址)
指针的指针
略
指针表达式
略
指针运算
1.算术运算
指针+/-整数:当一个指针和一个整数量执行算术运算时,整数在执行加法运算前始终会根据指针的类型来进行大小调整,调整就是把整数值和“sizeof(变量)”相乘。
指针-指针(只有两个指针都指向同一个数组中的元素时,才允许从一个指针减去另一个指针)。结果为两个元素在数组位置中的相对大小。
2、关系运算