一、指针的基本概念
1、作用:可以通过指针间接访问内存
2、使用指针:
可以通过解引用的方式老找到指针指向的内存——指针前加*
二、指针所占的内存空间
在32位操作系统下占用4个内存空间(无论什么数类型)
三、空指针和野指针
1、空指针
指针变量指向内存中编号为0 的空间
用途:初始化指针变量
注意:空指针指向的内存是不可以访问的
2、野指针
指针变量指向非法的内存空间,不可以访问
在程序中尽量避免出现野指针
四、const 修饰指针
const 修饰指针有三种情况:
· const 修饰指针——常量指针:
指针的指向可以修改,指针指向的值不可以修改
#include"iostream"
using namespace std;
int main() {
int a = 10;
int b = 20;
const int* p = &a;//常量指针
p = &b;
cout << *p << endl;
}
· const 修饰常量——指针常量
#include"iostream"
using namespace std;
int main() {
int a = 10;
int b = 20;
int* const p = &a;//指针常量
*p = b;
cout << *p << endl;
}
· const即修饰指针,又修饰常量
五、指针数组
作用:利用指针访问数组中的元素
#include"iostream"
using namespace std;
int main() {
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
int* p = arr;
for (int i=0; i < 10; i++) {
cout << *p << endl;
p++;
}
}
六、指针和函数
作用:利用指针作为函数参数,可以修改实参的值
1、值传递
#include"iostream"
using namespace std;
void swap(int a, int b) {
int temp;
temp = a;
a = b;
b = temp;
cout << "temp_a = " << a << endl;
cout << "temp_b = " << b << endl;
}
int main() {
int a = 10;
int b = 20;
swap(a,b);
cout << "a = " << a << endl;
cout << "b = " << b << endl;
}
2、地址传递
#include"iostream"
using namespace std;
void swap(int a, int b) {
int temp;
temp = a;
a = b;
b = temp;
cout << "temp_a = " << a << endl;
cout << "temp_b = " << b << endl;
}
void swap2(int* p1, int* p2) {
int temp = *p1;
*p1 = *p2;
*p2 = temp;
cout << "temp2_a = " << *p1 << endl;
cout << "temp2_b = " << *p2 << endl;
}
int main() {
int a = 10;
int b = 20;
swap2(&a,&b);
cout << "a = " << a << endl;
cout << "b = " << b << endl;
}