第七课 指针
7.1指针的概念
作用:可以直接通过指针间接访问内存
- 内存编号是从0开始记录的,一般用十六进制数字表示
- 可以利用指针变量保存地址
7.2指针变量的定义和使用
语法:数据类型 * 变量名;
#include <iostream>
using namespace std;
int main()
{
// 定义指针
int * p;
int a = 10;
// 让指针记录变量a的地址
p = &a;
cout << "a的地址: " << &a << endl;
cout << "指针p: " << p << endl;
// 使用指针
// 通过解引用的方式来找到指针指向的内存
*p = 1314;
cout << "a: " << a << endl;
cout << "*p: " << *p << endl;
return 0;
}
7.3指针所占的内存空间 32位操作系统下,指针占4个字节空间大小,不管什么类型 64位操作系统下,指针占8个字节空间大小,不管什么类型
7.4空指针和野指针 空指针:指针变量指向内存中编号为0的空间 用途:初始化指针变量 注意:空指针指向的内存不可访问
int main()
{
// 指针变量p指向内存地址编号为0的空间
int * p = NULL;
// 访问空指针报错
// 内存编号0-255为系统占用,不允许用户访问
cout << *p << endl;
return 0;
}
野指针:指针变量指向非法的内存空间(尽量避免) int main() { // 指针变量p指向内存地址编号为0x1010的空间 int * p = (int *)0x1010;
// 访问野指针错误
cout << *p << endl;
return 0;
}
7.5const修饰指针
三种情况:
- const修饰指针 --常量指针 (指针指向的值不可以改,指针的指向可以改)
const int * pp内存的是地址 - const修饰常量 --指针常量 (指针指向的值可以改,指针的指向不可以改)
int * const p - const即修饰指针,又修饰常量 (指针指向的值不可以改,指针的指向也不可以改)
const int * const p
7.6指针和数组
作用:利用指针访问数组内容
#include <iostream>
using namespace std;
int main()
{
int arr[] = {1,2,3,4,5,6,7,8,9};
int * p = arr; //指向数组的指针 数组名代表数组首地址
for(int i=1;i<10;i++)
{
cout << *p << endl;
p++;
}
return 0;
}
7.7指针和函数
作用:利用指针作为函数参数,可以修改实参的值

浙公网安备 33010602011771号