指针
一、指针的定义和使用
//定义指针
int a = 10;
int* p = &a;
cout << *p << endl;
cout << a << endl;
//使用指针
*p = 100;
cout << *p << endl;
cout << a << endl;
/***
输出结果为:
10
10
100
100
**/
二、指针所占内存空间
操作系统位数 | 所占字节数 |
---|---|
32位 | 4 字节 |
64位 | 8字节 |
三、空指针和野指针
空指针
- 用来给指针初始化。
- 空指针不可以进行访问
//空指针
int* p = nullptr;
野指针
地址是自己定义的,自己定义的空间,系统不一定把这块空间分配给程序。
//野指针
int* p1 = (int*)0x1109;
四、const 修饰指针
1.常量指针
int a = 10;
const int* p = &a;
特点:
- 指针的指向可以修改。
- 指针指向的值不可以修改。
2.指针常量
int a = 10;
int* const p = &a;
- 指针的指向不可以修改。
- 指针指向的值可以修改。
int a = 10;
const int* const p = &a
- 指针的指向不可以修改。
- 指针指向的值不可以修改。
五、指针与数组
int arr[] = { 1,2,3,4,5,6,7,8 };
int* p = arr;
for (int i = 0; i < 8; i++)
{
cout << *p << " ";
p++;
}
/***
输出结果:
1 2 3 4 5 6 7 8
**/
数组名代表数组的首地址。
六、指针与函数
#include<iostream>
using namespace std;
void m_swap(int* a, int* b)
{
int temp = *a;
*a = *b;
*b = temp;
}
int main()
{
int a = 10;
int b = 20;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
m_swap(&a,&b);
cout << "交换后" << endl;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
return 0;
}
/**
a = 10
b = 20
交换后
a = 20
b = 10
**/