什么是指针?
指针是一种存储另一个变量地址的特殊类型的变量。通过指针,你可以直接访问或者修改存储在该地址中的值。
int a = 10;
int *p = &a;
这里,&a
表示变量a
的内存地址,而 *p
是一个指针变量,它存储了 a
的地址。
指针的定义与使用
定义指针变量通常使用星号(*):
int *ptr;
定义后,需要为它分配一个地址:
int a = 20;
ptr = &a;
指针所占的内存空间
通常情况下,不同类型的指针所占的内存空间是相同的。在32位系统中通常是4字节,在64位系统中通常是8字节。
sizeof(ptr);
空指针和野指针
-
空指针:一个没有指向任何内存位置的指针,通常用
nullptr
或NULL
初始化。int *ptr = nullptr;
-
野指针:一个未初始化或已经释放的指针。
int *ptr; // 野指针
const
修饰指针
const
可以用于修饰指针,它的位置决定了它修饰的对象。
-
const
修饰指针变量,不能通过该指针修改数据。const int *ptr = &a;
-
const
修饰指针,指针的值不能被修改。int const *ptr = &a;
-
同时修饰。
const int const *ptr = &a;