int *p = NULL;
p是一个指针变量,指针 可以存值,但这个值是地址。指针有自己的地址,系统会为指针分配内存空间。
int * p 指针类型是 int * 指针所指向类型是int
char *p 指针类型是 char * 指针所指向类型是char
int **p 指针类型是 int ** 指针所指向类型是int*
int (*ptr)[3] 指针类型是 int (*) [3] 指针所指向类型是int()[3]
int *(*ptr)[4] 指针类型是 int *(*) [3] 指针所指向类型是int *()[4]
在32位的平台里,指针本身占据了4个字节长度
指针的运算
1.指针-指针
当两个指针指向同一数组中的元素,才可以运算,其结果是一种有符号的整数类型
2.< <= >= >
当两个指针指向同一数组中的元素,才可以运算
指针常量和常量指针
const char* p 定义了一个常量指针,指向的内容是常量,不可修改,但指针本身可以修改*p = 'b'是非法的,p = &b是可以的
char* const p = a 定义了一个指针常量,指针本身是常量,不可修改,但指针内容可以修改*p = 'b'是可以的,p = &b是非法的
char* p = "abc" 定义了一个指针变量,指向字符串首地址, 不能去改变常量区的内容
指针void:一般被称为通用指针或泛用指针,指向某个对象,但该对象不属于任何类型
指针数组:typename *p[n],定义了一个数组,数组包含了n个指针变量,数组中的元素都是指针
数组指针:指向数组的指针。