指针在C语言中是一种数据类型
是无符号类型
1.如何定义
普通类型
char x; int y; Student z; // 结构体类型
指针类型
char* x; // 也可以写成 char *x; int* y; Student* z;
- 任何类型都可以带*,加上*后是新的类型,统称”指针类型“
- *可以是任意多个——char******* x;
2.指针类型赋值
// 定义一个指针类型 char* x;
赋值:
x=(char*)2; // 普通类型赋值完整写法是 x=(char)2
y=(int***)5;
// 或者变量之间赋值
y=x;
3.指针类型的宽度
指针类型的宽度永远是4字节,无论类型是什么,无论有几个*
4.指针类型自加和自减(++ / --)
- 不带*类型的变量,++或者--都是加1或者减1
- 带*类型的变量,++或者--的数量是去掉一个*后变量的宽度
举例:x,y,z三个指针类型,只有一个*进行自增操作:
可以见到分别增加了char short int 字节宽度的数值
增加*的数量:
两个* 4个*
再增加*,去掉一个*的指针类型都是4字节,所以都是一样的。
5.指针类型的加减运算(指针类型可以做加法和减法,但是不能做乘除运算)
加减运算与上面的自加和自减运算类似:
- 指针类型变量+n=指针类型变量+n*(去掉一个*后类型的宽度)
- 减法同理
举例:
四个*是数值100+指针类型宽度4*加的数值5=100+20=120
当只有一个*的时候:是数值100+char,short,int类型的宽度*5 =105,110,120
6.指针类型的比较
指针类型是通过无符号数进行比较的