You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++技术问题:如何使用指针填充数组?

如何用指针填充C++数组tab2?

指针刚接触的时候确实容易让人头大,我当初学的时候也卡了好一阵!别着急,我用一个可运行的完整例子,再一步步给你拆解怎么用指针填充数组tab2,保证你能看明白。

核心概念先理清楚

首先要记住:数组的名字本质上就是指向数组第一个元素的指针。比如你定义int tab2[5];,tab2本身就代表了tab2[0]的内存地址。我们可以用指针来遍历数组的每一个元素,然后给它们赋值。

可运行的示例代码

#include <iostream>

int main() {
    // 1. 定义一个待填充的数组tab2,这里我们设大小为5
    int tab2[5];
    // 2. 定义一个指针,让它指向数组的第一个元素
    int* ptr = tab2;

    // 3. 用指针循环填充数组,赋值1到5
    for (int i = 0; i < 5; ++i) {
        // 解引用指针,给当前指向的数组元素赋值
        *ptr = i + 1;
        // 让指针向后移动一位,指向下一个数组元素
        ptr++;
    }

    // 4. 打印数组,验证填充结果
    std::cout << "填充后的tab2数组:";
    for (int num : tab2) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    return 0;
}

运行这段代码,你会看到输出:填充后的tab2数组:1 2 3 4 5

逐行拆解关键步骤

  • int* ptr = tab2;:把数组tab2的首地址赋值给指针ptr,现在ptr和tab2指向同一个位置——也就是tab2[0]的内存地址。
  • *ptr = i + 1;:这里的*是解引用操作符,意思是“访问指针指向的内存地址里的内容”。简单说,*ptr就等价于当前指针指向的数组元素(第一次循环时就是tab2[0],第二次是tab2[1],以此类推),我们直接给它赋值就行。
  • ptr++;:让指针向后移动一个int类型的大小(在大多数系统里是4字节),这样下一次循环时,ptr就会指向数组的下一个元素。这就是指针遍历数组的核心逻辑!

另一种更“指针风格”的写法

如果你不想用计数器i,还可以通过指针的范围来控制循环,更能体现指针的特性:

#include <iostream>

int main() {
    int tab2[5];
    int* current = tab2; // 指向数组起始位置
    int* end = tab2 + 5; // 指向数组最后一个元素的下一个位置(作为循环终止条件)

    int value = 1;
    while (current != end) {
        *current = value++;
        current++;
    }

    // 打印验证
    std::cout << "填充后的tab2数组:";
    for (int num : tab2) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    return 0;
}

这里tab2 + 5的意思是:从数组首地址往后偏移5个int的大小,指向数组末尾的下一个位置。当current移动到这个位置时,循环就停止,这样我们不需要依赖计数器,写法更贴近指针的本质。

关键要点总结

  • 指针存储的是内存地址,数组名就是数组首元素的地址。
  • 解引用*ptr可以读取或修改指针指向的内存内容。
  • 指针的加减操作是按类型大小偏移的:比如int*每次+1会移动4字节,char*每次+1移动1字节,刚好对应元素的大小。

内容的提问来源于stack exchange,提问作者lavr2004

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:56:48