C语言之指针

指针在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.指针类型的比较

指针类型是通过无符号数进行比较的

   

原文地址:https://www.cnblogs.com/codexlx/p/13434466.html