C风格数组和std::array有什么区别

2023年11月6日,周一下午


C风格数组在 C/C++ 中没有值语义。当将内置数组作为函数参数或返回值时,实际传递的是指向数组首元素的指针,而不是整个数组的副本。这意味着对函数参数中的数组或返回值返回的数组进行修改会影响原始数组,因为它们共享相同的内存。

而当用std::array作为函数参数或返回值时,实际传递的是std::array的副本,这意味着它们各自使用不同的内存,就算修改也无法对彼此产生影响。也就是说,std::array有值语义。

#include 
#include 
using namespace std;

int main() {
	int c_array[] = {1, 2, 3, 4, 5};
	array std_array = {1, 2, 3, 4, 5};
	
	int *c_array_copy=c_array;
	c_array[0]=100;
	cout<<"c_array_copy[0]="< std_array_copy=std_array;
	std_array[0]=100;
	cout<<"std_array_copy[0]="<

C风格数组和std::array有什么区别_第1张图片

你可能感兴趣的:(#,C++未分类,c语言,开发语言)