📅  最后修改于: 2023-12-03 15:38:45.788000             🧑  作者: Mango
在编写C/C++程序时,经常需要将数组传递给函数,进行一些数据处理或者算法实现等操作。本文将介绍如何将数组传递给C/C++中的函数。
在C/C++中,一维数组可以通过指针来进行传递。指针可以指向数组的首元素,通过指针可以访问整个数组。
在函数参数中定义指向数组首元素的指针即可将数组传递给函数。例如:
void function(int *array, int size)
{
//对数组进行操作
}
int main()
{
int myArray[10] = {1,2,3,4,5,6,7,8,9,10};
function(myArray, 10);
return 0;
}
在函数内部,通过指针array访问整个数组。需要注意的是,在函数参数中,可以不定义数组大小,而是使用sizeof运算符从指针中获取数组大小,例如:
void function(int *array)
{
int size = sizeof(array) / sizeof(int);
//对数组进行操作
}
int main()
{
int myArray[10] = {1,2,3,4,5,6,7,8,9,10};
function(myArray);
return 0;
}
但是这种方法只在数组在同一个作用域内是有效的,比如:
int main()
{
int myArray[10] = {1,2,3,4,5,6,7,8,9,10};
function(myArray);
return 0;
}
void function(int *array)
{
int size = sizeof(array) / sizeof(int); //这里的size会是1,而不是10
//对数组进行操作
}
另外一种传递数组的方法是,在函数参数中直接定义数组。例如:
void function(int array[], int size)
{
//对数组进行操作
}
int main()
{
int myArray[10] = {1,2,3,4,5,6,7,8,9,10};
function(myArray, 10);
return 0;
}
在函数内部,array就相当于一个数组,可以对其进行操作。由于数组是通过指针传递的,所以这种方法可以实现在函数内部修改数组。
多维数组可以通过指针数组来传递,每一维都对应一个指针。例如:
void function(int **array, int row, int col)
{
//对多维数组进行操作
}
int main()
{
int myArray[2][3] = {{1,2,3}, {4,5,6}};
int *pArray[2] = {myArray[0], myArray[1]};
function(pArray, 2, 3);
return 0;
}
在函数内部,通过指针数组array访问整个多维数组。
如果要在函数内部修改多维数组,可以像传递一维数组一样,直接定义多维数组参数。例如:
void function(int array[][3], int row, int col)
{
//对多维数组进行操作
}
int main()
{
int myArray[2][3] = {{1,2,3}, {4,5,6}};
function(myArray, 2, 3);
return 0;
}
在函数内部,array就是一个多维数组,可以对其进行操作。
本文介绍了如何将数组传递给C/C++中的函数,包括传递一维数组和多维数组。对于一维数组,可以通过指针或者数组参数进行传递;对于多维数组,可以通过指针数组或者数组参数进行传递。需要注意的是,在函数参数中定义数组大小可能会带来一些问题,建议使用sizeof运算符从指针中获取数组大小。