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

C++实现将int数组复制到另一个数组的问题求助

问题分析与修正方案

先梳理下你这段代码里的几个核心问题:

  • 头文件包含语句后面多了不必要的分号,C++中#include指令不需要以分号结尾
  • 重复声明了指针变量p2:int *p2, *p2;,这会直接触发编译错误
  • copy_array函数只有声明没有实现,而且参数设计没法完成数组复制(只传了源数组和长度,没指定要复制到的目标数组)
  • j[i] = &p2;的逻辑完全错误:j是int类型数组,&p2是指针的地址(类型为int**),类型不匹配,而且你要的是复制数组元素值,不是存储指针地址
  • system("PAUSE"语句不完整,缺少闭合括号和分号

下面是修正后的完整代码,完美实现把数组a的值复制到数组j的功能:

#include "stdafx.h"
#include <iostream>
using namespace std;

int a[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int j[10];

// 修正后的复制函数:接收源数组、目标数组和数组长度
void copy_array(int *src, int *dest, int n) {
    for (int i = 0; i < n; i++) {
        dest[i] = src[i];
    }
}

int main() {
    // 打印原数组内容
    cout << "原数组a的元素:" << endl;
    for (int l = 0; l < 10; l++) {
        cout << a[l] << " ";
    }
    cout << endl;

    // 调用复制函数完成数组拷贝
    copy_array(a, j, 10);

    // 打印复制后的数组内容
    cout << "复制后的数组j的元素:" << endl;
    for (int i = 0; i < 10; i++) {
        cout << j[i] << " ";
    }
    cout << endl;

    system("PAUSE");
    return 0;
}

额外补充几个优化点:

  • 把copy_array改成void类型(因为不需要返回值),同时新增目标数组的指针参数,这样才能明确把源数组的值复制到目标数组中
  • 移除了多余的全局指针声明,数组复制不需要额外的全局指针变量
  • 调整了打印格式,让输出结果更直观清晰
  • 补全了main函数的返回值(符合C++标准中main函数需返回int的要求)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:57:23