目录
1、指针的本质
1.1 指针的定义
一般在内存地址中存储的是数据,如果我们需要将某个变量的地址保存下来,就需要用到指针。
1.2 取地址操作符与取值操作符
取地址操作符为&,也称引用,通过该操作符我们可以获取一个变量的地址值;取值操作符为*,也称为解引用,通过该操作符我们可以得到一个地址对应的数据。
注意
(1)指针的变量名是p,而不是*p
(2)在定义指针变量时必须指定其类型。需要注意的是,只有整型变量的地址才能放到指向整型变量的指针变量中,依此类推。
(3)连续定义三个指针变量的正确写法
int* a, * b, * c;//定义三个整型的指针变量
int* a, b, c;//一个整型指针变量,两个整型变量
2、指针的使用场景
2.1 指针的传递
普通值传递
#include <stdio.h>
void change(int j);
int main()
{
int i = 10;
printf("before change i=%d\n", i);
change(i);
printf("after change i=%d\n", i);
return 0;
}
void change(int j)
{
j = 5;
}
经过change函数,i的值仍然为10
指针传递
#include <stdio.h>
void change(int* j);
int main()
{
int i = 10;
printf("before change i=%d\n", i);
change(&i);
printf("after change i=%d\n", i);
return 0;
}
void change(int* j)//j=&i
{
*j = 5;
}
经过change函数,i的值改变
2.2 指针的偏移
指针即地址,就像我们找到了一栋楼,这栋楼的楼号是B,那么住前就是A,往后就是C,所以应用指针的另一个场景就是对其进行加减,但对指针进行乘除是没有意义的,就像家庭住址乘以5没有意义一样。
数组是特殊的,不能和整型变量、浮点型、字符型变量类比。
数组名a,类型是数组,a里边存了一个值,是地址值,是数组的起始地址
#include <stdio.h>
int main()
{
int a[5] = { 1,2,3,4,5 };
int* p;
p = a;
}
</