C语言指针
// 1、 指针的基本概念:
// 指针:就是数据地址
// 定义变量:数据类型 变量名称;
// int a;
int a = 5;
// 定义指针变量
// 指针指向的数据类型 *指针变量名称;
int *p;// 根据地址访问对应存储空间的操作符 *操作符
p = &a;// 访问指针变量p所指向的a的存储区域
// *p与&a是等价的
printf("%d",*p);// 输出结果为5
/* *作用:
1、在定义变量的时候 * 是一个类型说明符,说明定义的这个变量是一个指针变量
2、在不是定义变量的时候 *是一个操作符,访问指针所指向存储空间
&作用:
&作为单目操作符,放在变量的前面,是取出变量的地址
* 与 & 他们是一对反操作
printf("%p",p);
printf("%p",&*p);
输出同样地址
*/
// 指针的初始化
/*
1、先定义指针变量再初始化
int a = 10;
int *p;
p = &a;
2、定义指针变量的同时进行初始化
int *p1 = &a;
printf("a = %d",p1);// 运行结果为10
*p = 20;
printf("a = %d",*p);// 运行结果为20
// 多个指针指向同一个地址,指针的指向是可以改变的
注意点:
1、指针没有初始化里面是垃圾值,这时候我们称这个指针为野指针操作它可能导致程序崩溃
2、访问你不该访问的数据
3、指针变量不可以直接赋值一个整型常量,因为我们不知道这个内存是哪块地址
// 要访问指针所指向存储区域必须前面加*号
指针的作用:
1、共享数据,可以在不同的函数共享
2、以传递地址代替值拷贝(数组)
*/
/*
3、多级指针
二级指针:指向一级指针的指针
三级指针:指向二级指针的指针
*/
// 指针为什么区分类型
/*
指针都是占用8个字节的存储空间,那为什区分类型
// 指针所指向的存储空间的数据类型是用来在访问该存储空间的时候,计算要访问那几个字节的
// 指向什么样类型存储空间的指针里面只能存放什么类型的变量的地址
*/