C++入门——60s从0到1
指针
指针是C++中最基本也是最重要的概念之一,它提供了一种直接操作内存的方式。本文将详细介绍C++中的指针,包括指针的概念、定义和使用方法。
指针的概念
指针是一个变量,它存储了一个内存地址。通过指针,我们可以直接访问内存中的数据,而不需要知道该数据的名称。指针可以指向任何类型的数据,包括基本类型、数组、结构体和类等。
在C++中,指针有两种类型:指向变量的指针和指向函数的指针。本文将主要介绍指向变量的指针。
定义指针变量
定义一个指针变量需要使用“*”符号,例如:
int *p; // 定义一个指向int类型数据的指针变量p
在上面的例子中,我们定义了一个名为p的指针变量,它可以指向一个int类型的数据。需要注意的是,指针变量本身的类型和它所指向的数据类型可以是不同的。例如:
int *p; // 定义一个指向int类型数据的指针变量p
double x = 3.14; // 定义一个double类型的变量x
p = &x; // 将p指向x的地址
在上面的例子中,我们定义了一个名为p的int类型指针变量,并将它指向了一个double类型的变量x。这是因为C++允许将不同类型的指针指向不同类型的数据。
获取指针地址
获取一个变量的地址可以使用“&”符号,例如:
int x = 10; // 定义一个int类型的变量x
int *p = &x; // 将p指向x的地址
在上面的例子中,我们使用“&”符号获取了变量x的地址,并将其赋值给了一个指向int类型的指针变量p。这样,我们就通过指针p间接地访问了变量x的值。
通过指针修改变量值
通过指针可以修改变量的值,例如:
int x = 10; // 定义一个int类型的变量x
int *p = &x; // 将p指向x的地址
*p = 20; // 通过p修改x的值为20
在上面的例子中,我们通过将p指向变量x的地址,然后使用“*”符号修改变量x的值为20。需要注意的是,“*”符号用于获取或修改指针所指向的数据值,“&”符号用于获取变量的地址。
空指针和野指针
空指针是指没有指向任何有效地址的指针,通常用于初始化指针或者表示未知的情况。在C++中可以使用nullptr来表示空指针,例如:
int *p = nullptr; // 定义一个空指针p
野指针是指指向未知内存区域的指针,这种指针可能会导致程序崩溃或产生不可预测的行为。为了避免野指针的出现,我们应该在使用之前始终检查指针是否为空或有效。例如:
int *p = nullptr; // 定义一个空指针p if (p != nullptr) { // 如果p不为空则进行操作 // ... } else { // p为空或无效时进行处理... }
在上面的例子中,我们在使用p之前检查了它是否为空或有效,以避免出现野指针的情况。