📅  最后修改于: 2023-12-03 15:29:53.366000             🧑  作者: Mango
在C++中,指针是一个变量,其值为另一个变量的地址。换句话说,指针是一个存储内存地址的变量。和其他变量一样,指针也有不同的数据类型。
指针可以在程序中用来修改其他变量的值,或者动态分配内存。
指针的数据类型与其所指向的变量的数据类型相关。指向不同类型变量的指针具有不同的数据类型。
以下是常见的指针数据类型:
可以指向整型变量或整型数组的指针,其数据类型为 int *
。
int x = 10;
int* ptr = &x; // 指向整型变量的指针
int arr[5] = {1, 2, 3, 4, 5};
int* ptr2 = arr; // 指向整型数组的指针
指向字符型变量或字符型数组的指针,其数据类型为 char *
。
char ch = 'a';
char* ptr3 = &ch; // 指向字符型变量的指针
char str[6] = "hello";
char* ptr4 = str; // 指向字符型数组的指针
指向浮点型变量或浮点型数组的指针,其数据类型为 float *
。
float f = 3.14;
float* ptr5 = &f; // 指向浮点型变量的指针
float arr2[3] = {1.1, 2.2, 3.3};
float* ptr6 = arr2; // 指向浮点型数组的指针
指向双精度浮点型变量或双精度浮点型数组的指针,其数据类型为 double *
。
double d = 3.1415926;
double* ptr7 = &d; // 指向双精度浮点型变量的指针
double arr3[2] = {1.23456789, 2.34567891};
double* ptr8 = arr3; // 指向双精度浮点型数组的指针
可以指向自定义类型(如结构体、类)变量或数组的指针,其数据类型为 Type *
。
struct Person {
char name[20];
int age;
};
Person p = {"Jack", 20};
Person* ptr9 = &p; // 指向 Person 结构体变量的指针
class Dog {
public:
void bark() {
cout << "wangwang" << endl;
}
};
Dog dog;
Dog* ptr10 = &dog; // 指向 Dog 类变量的指针
除了上述数据类型,指针还有一个比较特殊的数据类型——指向指针的指针。
指向指针的指针也叫作二级指针(或更高级别的指针),其数据类型为 Type **
。
int x = 10;
int* ptr11 = &x;
int** ptr12 = &ptr11; // ptr12 是一个指向指针 ptr11 的指针
在写指向指针的指针时要格外小心,因为指针的指针纠结复杂,容易出错。