C语言指针

1. 指针的定义方式:

示例一:

1
2
3
int a  = 5;
int *p;
p = &a;

说明:p为指针变量,int p 中的为类型说明符,声明p的类型为指针变量类型。指针变量必须是指向内存地址(内存指针),&符为取地址运算符。
示例二:

1
2
int a = 5;
int *p = &a;

说明:先声明一个指针变量,然后对这个指针变量进行赋值。

2. 指针变量的使用

1
2
3
int a  = 5;
int *p = &a;
printf("*p = %d", *p);

说明:这里的printf(“ p = %d“, p);中的与上边声明指针变量的int p的含义是不同的,这里的*为指针运算符,不是类型说明符。

printf("*&a  = %d", *&a); //运行结果为a本身

由于*和&的优先级相同,所以会先进行&a进行取a的内存地址,然后在通过*指针运算符,指向a的内存地址并返回这块内存单元存放的数据。

总结

  • int *p 声明指针变量的* 为类型说明符,他的性质和int long的作用相似,都是说明变量的类型。
  • *p 获取指针变量的为指针运算符,和&的类型都是一样的就是参与运算的,只是&获取的是内存的地址,获取的是内存地址为该指针变量上存储的数据