本文主要是介绍牛刀小试 - 数组拷贝,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
数组拷贝之值传递与地址传递的区别
C++ 获取数组长度
/*********************************************************************
程序名: 数组拷贝之值传递与地址传递的区别
说明:
*********************************************************************/
#include <iostream>
#include <string>
using namespace std;template<class T>int GetLength(T& arr)
{return sizeof(arr) / sizeof(arr[0]);
}void ArrayCopy(int* ori, int* cop, int lenght)
{for (int i = 0; i < lenght; i++){*cop++ = *ori++;}
}
int main()
{int original[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };int *copiedOne = original; // *copiedOne 指向original的首地址int copiedTwo[10];int lenght = GetLength(original);int i;cout << "元素数组->拷贝后的数组" << endl;for (i = 0; i < lenght; i++){cout << " " << original[i] << " " << copiedOne[i] << endl;}ArrayCopy(original, copiedTwo, lenght);copiedTwo[9] = 20;cout << "----值传递----" << endl;cout << "值传递更改数据后,只有拷贝的数组中的元素被更改:" << endl;cout << "元素数组 -> 拷贝后的数组 " << endl;for (i = 0; i < lenght; i++){cout << " " << original[i] << " " << copiedTwo[i] << endl;}copiedOne[9] = 50;cout << "----地址传递----" << endl;cout << "地址传递更改数据后,原数组元素与拷贝的数组中的元素同时被更改:" << endl;cout << "元素数组 -> 拷贝后的数组" << endl;for (i = 0; i < lenght; i++){cout << " " << original[i] << " " << copiedOne[i] << endl;}system("PAUSE");return 0;
}
这篇关于牛刀小试 - 数组拷贝的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!