当前位置:首页 C++ > 正文

c++数组与指针的区别。

作者:野牛程序员:2023-12-04 17:32:20 C++阅读 2788

数组是一种数据结构,用于存储相同类型的元素。它在内存中是一块连续的存储区域,可以通过索引访问每个元素。数组的大小在编译时确定,且不能改变。

指针是一个变量,存储另一个变量的内存地址。指针可以指向任意类型的数据,而且可以在运行时动态地改变指向的位置。

主要区别在于:

  1. 内存分配:

    • 数组在定义时就分配了固定大小的内存空间,可以是静态存储区(全局变量)或栈上。

    • 指针只是一个变量,它存储了另一个变量的地址,而指向的数据可以是静态的,也可以是动态分配的堆上的内存。

  2. 大小和元素类型:

    • 数组的大小在编译时确定,且不能改变。元素类型必须相同。

    • 指针可以指向任意类型的数据,并且可以通过类型转换来指向不同类型的数据。

  3. 初始化和赋值:

    • 数组在定义时需要指定大小,并且可以在定义时初始化。

    • 指针在定义时可以不初始化,也可以在之后指向某个变量的地址。

  4. 数组名的特殊性:

    • 数组名本身可以看作一个常量指针,指向数组的第一个元素的地址。但数组名不可改变,而指针变量的值可以修改。

总的来说,数组是一块静态分配的连续内存,而指针是一个变量,可以动态指向不同的内存位置。

#include <iostream>

int main() {
    // 示例1:数组
    int arr[5] = {1, 2, 3, 4, 5};

    // 访问数组元素
    std::cout << "Array elements: ";
    for (int i = 0; i < 5; ++i) {
        std::cout << arr[i] << " ";
    }
    std::cout << std::endl;

    // 示例2:指针
    int x = 10;
    int *ptr = &x; // 指针指向变量x的地址

    // 使用指针访问变量的值
    std::cout << "Value pointed by ptr: " << *ptr << std::endl;

    // 示例3:指针和数组
    int numbers[] = {10, 20, 30, 40, 50};
    int *pArray = numbers; // 指针指向数组的第一个元素的地址

    // 使用指针访问数组元素
    std::cout << "Array elements using pointer: ";
    for (int i = 0; i < 5; ++i) {
        std::cout << *(pArray + i) << " ";
    }
    std::cout << std::endl;

    return 0;
}


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击