指针数组如何做函数实参
时间: 2024-06-11 18:09:32 浏览: 69
指针数组作为函数参数时,可以直接将指针数组名作为参数传递给函数,函数可以通过指针数组名访问指针数组中的元素,从而完成对指针数组的操作。例如:
```c
void func(int* arr[], int size) {
for (int i = 0; i < size; i++) {
printf("%d ", *(arr[i]));
}
}
int main() {
int a = 1, b = 2, c = 3;
int* arr[] = {&a, &b, &c};
func(arr, 3); // 将指针数组 arr 和数组长度 3 作为参数传递给函数 func
return 0;
}
```
在函数 `func` 中,通过指针数组名 `arr` 访问指针数组中的元素,即 `arr[i]`,然后通过 `*(arr[i])` 取出指针数组中每个元素所指向的值。在 `main` 函数中,定义指针数组 `arr` 并初始化,然后将 `arr` 和数组长度 3 作为参数传递给函数 `func`,从而完成了对指针数组的操作。
相关问题
二维数组作为函数实参
二维数组作为函数的实参时,可以使用以下两种方式进行传递:
1. 将二维数组作为指针传递。
例如,定义一个函数来计算一个二维数组的和:
```c++
void sum(int *arr, int rows, int cols) {
int total = 0;
for(int i=0; i<rows; i++) {
for(int j=0; j<cols; j++) {
total += *(arr + i*cols + j);
}
}
cout << "Sum of array elements: " << total << endl;
}
```
在调用该函数时,需要将二维数组转换为指向第一个元素的指针,并传递数组的行数和列数。
```c++
int main() {
int arr[3][4] = {{1,2,3,4}, {5,6,7,8}, {9,10,11,12}};
sum(&arr[0][0], 3, 4);
return 0;
}
```
2. 使用数组引用传递二维数组。
使用数组引用时,可以将二维数组作为函数的形参,调用函数时直接传递二维数组。
例如,定义一个函数来打印一个二维数组的元素:
```c++
void print(int (&arr)[3][4]) {
for(int i=0; i<3; i++) {
for(int j=0; j<4; j++) {
cout << arr[i][j] << " ";
}
cout << endl;
}
}
```
在调用该函数时,直接传递二维数组即可。
```c++
int main() {
int arr[3][4] = {{1,2,3,4}, {5,6,7,8}, {9,10,11,12}};
print(arr);
return 0;
}
```
C语言二维数组作为函数实参
当我们将二维数组作为函数的实参时,实际上传递的是指向二维数组首元素的指针,也就是二级指针。在函数内部,我们可以像操作普通的二维数组一样来进行操作。下面是一个例子:
```c
void printArray(int (*arr)[3], int rows) {
for(int i=0; i<rows; i++) {
for(int j=0; j<3; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
}
int main() {
int arr[2][3] = {{1,2,3}, {4,5,6}};
printArray(arr, 2);
return 0;
}
```
在上面的例子中,我们定义了一个二维数组 `arr`,并将其作为参数传递给了 `printArray` 函数。函数内部通过指针操作二维数组,最终输出了数组的所有元素。
阅读全文