前言
文章参考B站黑马程序员课程添加链接描述
一、指针是什么?
1、定义指针
int a =10;
int*p = &a;
2、使用指针
指针前加*代表解引用,找到指针指向内存中的数据
*p=1000;
二、指针常见用法
1、指针所占内存空间
指针也是数据类型,这种数据类型所占空间为多少呢?
32位系统占4个字节,64位系统占8个字节
sizeof(int*)
sizeof(p)
2、空指针
空指针:指针变量指向内存中编号为零的空间
用途:初始化指针变量
注意:空指针指向的内存是不可访问的;0-255的内存编号是系统占用的,所以不可访问
int*p =NULL
3、野指针
野指针:指针变量指向非法的内存空间
int*p = (int*)0x1100
4、const修饰指针
1、const修饰指针:常量指针
const int*p = &a
特点:指针的指向可以修改,但是指针指向的值不可以修改
2、指针常量
int * const p = &a
特点:指针的指向不可以修改,但是指针指向的值可以修改
3、const修饰指针也修饰常量
const int * const p = &a
特点:指针的指向不可以修改,但是指针指向的值可以修改
5 、指针和数组
作用:利用指针访问数组中元素
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
int*p = arr; //arr就是数组首地址
6、指针和函数
作用:利用指针作函数参数,可以修改实参的值
如果地址传递可以修饰实参
7、结构体指针
作用:通过指针访问结构体中的成员
利用操作符->可以通过结构体指针访问结构体成员
struct student
{
string name;
int age;
};
int main()
struct student stu = {"张三",18};
struct student*p = &stu;
p->age = 20;