💦指针
指针是一个值为内存地址的变量(或数据对象)
#include <iostream>
using namespace std;
int main()
{
//声明指针
int n = 1;
int* ptr_n = &n;
//使用指针可以间接获取数据,使用变量名是直接获取数据,使用指针比直接使用变量的代价要高。
//可以使用间接运算符* 获取指针变量所指向内存空间的值
cout << ptr_n << endl;
cout << *ptr_n << endl;
}
注意不能简单地将整数赋值给指针。
要将数字值作为地址来使用,必须通过强制类型转换int* ptr = (int*)0xB80000000;
💦间接运算符*
💦特殊的char*
//c语言中,并不存在字符串类型,而是使用char[]来表示字符串
char name[] = "孙悟空"; //字符串就是一个特殊地字符数组,最后一个元素为\0
cout << sizeof(name) << endl;
char* ptr_name = name;
cout << ptr_name << endl;
char ch = 'A';
char* ptr_char = &ch;
//因为在打印char*类型元素时,编译器会默认这应该是一个字符串,但在这里,并不明确ptr_char有多少空间
//就会出错
cout << ptr_char << endl;
💦万能指针void*
💦空指针
💦引用
💦指针引用的关系
- 引用对指针进行额简单封装,底层仍然是指针
- 获取引用地址时,编译器会进行内部转换-获取的是所引用变量的内存地址
使用引用,并没有进行大的变化,而只是对指针进行了简单封装,书写代码时,不必再频繁使用*运算符了