MST

星途 面试题库

面试题:C++指针数组与指向指针的指针基础应用

请编写一段C++代码,定义一个指针数组,每个指针指向一个整型变量,然后通过指向指针的指针来遍历并输出这些整型变量的值。同时说明指针数组和指向指针的指针在内存结构上的不同。
16.4万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
#include <iostream>

int main() {
    int num1 = 10;
    int num2 = 20;
    int num3 = 30;

    // 定义指针数组,每个指针指向一个整型变量
    int* ptrArray[3] = {&num1, &num2, &num3};

    // 定义指向指针的指针
    int** ptrToPtr = ptrArray;

    // 通过指向指针的指针来遍历并输出这些整型变量的值
    for (int i = 0; i < 3; ++i) {
        std::cout << "Value at index " << i << " is: " << **(ptrToPtr + i) << std::endl;
    }

    return 0;
}

指针数组和指向指针的指针在内存结构上的不同:

  1. 指针数组
    • 指针数组是一个数组,数组的每个元素是一个指针。在内存中,指针数组本身占据一段连续的内存空间,其大小为数组元素个数乘以指针的大小(通常在64位系统下指针大小为8字节)。每个指针元素指向相应的变量,这些变量在内存中的位置不一定与指针数组相邻。例如上述代码中ptrArray在内存中有一段连续空间存储三个指针,分别指向num1num2num3
  2. 指向指针的指针
    • 指向指针的指针本身是一个指针,它指向另一个指针。在内存中,指向指针的指针占据一个指针大小的内存空间(通常64位系统下为8字节),它所指向的指针又指向实际的数据。例如上述代码中ptrToPtr指向ptrArray的首地址,通过ptrToPtr可以间接访问到ptrArray中的指针,进而访问到实际的整型变量。