1.指针的作用:可以通过指针间接访问内存
#include<iostream>
using namespace std;
int main() {
//定义指针
int a = 10;
//指针定义的语法:数据类型*指针变量名;
int* p;
//指针记录变量a的地址;
p = &a;
cout << "a的地址为:" << &a << endl;
cout << "指针p为:" << p << endl;
//2,使用指针
//可以通过解引用的方式找到指针指向的内存
//指针前面加*代表解引用,找到指针指向内存中的数据
*p = 1000;//可以对原数据进行修改和读取
cout << "a=" << a << endl;
cout << "*p=" << *p << endl;
system("pause");
return 0;
}
2.指针所占用的内存空间
#include<iostream>
using namespace std;
int main() {
//指针所占用的内存空间
int a = 10;
int* p = &a;
cout << "sizeof(int*)=" << sizeof(int*) << endl;
cout << "sizeof(float*)=" << sizeof(float*) << endl;
cout << "sizeof(double*)=" << sizeof(double*) << endl;
cout << "sizeof(char*)=" << sizeof(char*) << endl;
//在32位操作系统下,指针是占4个字节空间的大小,不管什么数据类型
//在64位操作系统下,指针是占8个字节空间的大小.
system("pause");
return 0;
}
3.空指针和野指针
空指针:指针变量指向内存地址编号为0的空间
用途:初始换指针变量
注意:空指针指向的内存是不可以访问的
#include<iostream>
using namespace std;
int main() {
//空指针
//1.给指针变量进行初始化
int* p = NULL;
//2.空指针是不可以访问的
//0-255之间的内存编号是系统占用的,因此不可以访问
*p = 100;
cout << *p;//无法输出,会报错
system("pause");
return 0;
}
野指针:指针变量指向非法的内存空间。
#include<iostream>
using namespace std;
int main() {
//指针变量p指向内存地址编号为0x1100的空间
int* p = (int*)0x1100;
//访问野指针报错
cout << *p << endl;
system("pause");
return 0;
}
总结:空指针和野指针都不是我们申请的空间,因此不要访问。