指针:
为什么需要指针?
使用指针处理数组中存储的数据,执行速度要比使用 下标 快很多。
指针可以做到更改函数调用处之前的局部变量
指针:
一个变量的地址为该变量的“指针”,十个常量
指针变量:
指针变量是一个变量,用于存储地址的值
指针变量的声明:
数据类型 *指针变量名;
int i = 10;
int *p1; //可以将int *看做是一个整体,然后p1中需要存储的是地址类型的数据
p1 = &i; //&是取址运算符 等价于 int *pi = &i;
* 号为 取址运算符
1.表达式中,*号两边都有变大时的话,*号是四则运算的乘法运算
2.在声明语句中,*号表明后面的变量为一个指针形式的变量
3.*号如果不在声明语句中,而只是在右边的表达式的话,表明取*号右边变量中所存地址对应内存中的数据(取值)
*p3 - &i;
等价于 i = &i;
printf("%d\n");打印结果是十进制的
printf("%p\n");打印结果是十六进制的 ,专门用于打印内存地址值
int i2 = 10;
int *p5;
int *p6;
p5 = &i2;
&*p5 //*p5等于i2 //&*p5 等于 &i2
*&i2 //实际上就是 i2的值
(*p5)++;
先找出p5所存储地址指向的存储单元的值,把值进行自加,p5的地址不变
*p5++;
++ 与 * 同一优先级,结合方向是从右向左,所以先找出p5所存储地址的值,然后该值加一,那么现在p5就不在指向变量i2了
在C语言中,地址传递也称为引用传递