📜  C++中指针的数据类型(1)

📅  最后修改于: 2023-12-03 15:29:53.366000             🧑  作者: Mango

C++中指针的数据类型

什么是指针?

在C++中,指针是一个变量,其值为另一个变量的地址。换句话说,指针是一个存储内存地址的变量。和其他变量一样,指针也有不同的数据类型。

指针可以在程序中用来修改其他变量的值,或者动态分配内存。

指针数据类型

指针的数据类型与其所指向的变量的数据类型相关。指向不同类型变量的指针具有不同的数据类型。

以下是常见的指针数据类型:

1. 整型指针

可以指向整型变量或整型数组的指针,其数据类型为 int *

int x = 10;
int* ptr = &x; // 指向整型变量的指针
int arr[5] = {1, 2, 3, 4, 5};
int* ptr2 = arr; // 指向整型数组的指针
2. 字符型指针

指向字符型变量或字符型数组的指针,其数据类型为 char *

char ch = 'a';
char* ptr3 = &ch; // 指向字符型变量的指针
char str[6] = "hello";
char* ptr4 = str; // 指向字符型数组的指针
3. 浮点型指针

指向浮点型变量或浮点型数组的指针,其数据类型为 float *

float f = 3.14;
float* ptr5 = &f; // 指向浮点型变量的指针
float arr2[3] = {1.1, 2.2, 3.3};
float* ptr6 = arr2; // 指向浮点型数组的指针
4. 双精度浮点型指针

指向双精度浮点型变量或双精度浮点型数组的指针,其数据类型为 double *

double d = 3.1415926;
double* ptr7 = &d; // 指向双精度浮点型变量的指针
double arr3[2] = {1.23456789, 2.34567891};
double* ptr8 = arr3; // 指向双精度浮点型数组的指针
5. 自定义类型指针

可以指向自定义类型(如结构体、类)变量或数组的指针,其数据类型为 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 的指针

在写指向指针的指针时要格外小心,因为指针的指针纠结复杂,容易出错。