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
相关产品推荐
相关产品推荐

