C++(指针数组、数组指针)



在C++中,指针数组和数组指针是两个不同的概念,它们的名字虽然相似,但含义和使用方式都有明显的区别。以下是详细的介绍和区别:



1. 指针数组

指针数组(Array of Pointers)是一个数组,其中的每个元素都是一个指针。它用于存储指向某种类型的数据的指针。

例如,一个指向整数的指针数组可以这样定义:

int* arr[5];

在这个例子中,arr 是一个包含 5 个指针的数组,每个指针都指向一个整数。你可以这样使用它:

int a = 1, b = 2, c = 3, d = 4, e = 5;
int* arr[5] = { &a, &b, &c, &d, &e };

for (int i = 0; i < 5; ++i) {
    std::cout << *arr[i] << " ";  // 输出 1 2 3 4 5
}
std::cout << std::endl;


2. 数组指针

数组指针(Pointer to an Array)是指向数组的指针。它用于指向一个数组的首地址。

例如,一个指向包含 10 个整数的数组的指针可以这样定义:

int (*ptr)[10];

在这个例子中,ptr 是一个指向包含 10 个整数的数组的指针。你可以这样使用它:

int arr[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int (*ptr)[10] = &arr;

for (int i = 0; i < 10; ++i) {
    std::cout << (*ptr)[i] << " ";  // 输出 0 1 2 3 4 5 6 7 8 9
}
std::cout << std::endl;


3. 区别总结

  1. 定义方式不同

    • 指针数组:一个数组,其中的每个元素都是指针。例如 int* arr[5]
    • 数组指针:一个指向数组的指针。例如 int (*ptr)[10]
  2. 使用方式不同

    • 指针数组:用于存储多个指针,可以指向不同的内存地址。
    • 数组指针:用于指向一个数组,可以通过解引用访问数组的元素。
  3. 功能不同

    • 指针数组:常用于需要存储多个指针的场景,例如动态分配多个对象的指针。
    • 数组指针:常用于传递数组的首地址,例如作为函数参数传递大数组以避免复制整个数组。

通过理解这两个概念的区别,可以更好地选择和使用它们来解决特定的编程问题。



posted @ 2024-07-19 11:01  做梦当财神  阅读(3)  评论(0编辑  收藏  举报