要将1D数组传递给函数,我们这样做:
#include <stdio.h>
#include <stdlib.h>
void func(int *arr, int n)
{
// code here
}
int main()
{
int arr[] = {......}; // declare array
int n = sizeof(arr)/sizeof(arr[0]);
func(arr); // calling function func
return 0;
}
Run Code Online (Sandbox Code Playgroud)
要将2D数组传递给函数,我们这样做:
#include <stdio.h>
#include <stdlib.h>
void func(int arr[][2])
{
// code here
}
int main()
{
int arr[3][2]; // declare 2D array
func(arr); // calling function func
return 0;
}
Run Code Online (Sandbox Code Playgroud)
因此,在将指针数组传递给函数时,我们可以这样做吗?
#include <stdio.h>
#include <stdlib.h>
void func(int **arr, int n)
{
// code here
}
int main()
{
int *arr[] = {......}; // declare array of pointers
int n = sizeof(arr)/sizeof(arr[0]);
func(arr, n); // calling function func
return 0;
}
Run Code Online (Sandbox Code Playgroud)
说实话,我对指针和数组感到困惑.我花了很长时间才弄清楚如何传递2D数组.我试着搜索其他类似的问题,但无济于事.请帮助我:将指针数组传递给函数.此外,任何我可以清除混乱的链接将非常感激.
在上一个示例中,您有一个指针数组.
是的,那会起作用,例如检查这个玩具示例:
#include <stdio.h>
#include <stdlib.h>
void func(int **arr, int n) {
// print equal to arr[0][1]
printf("%d %d\n", n, *arr[1]);
}
int main(void) {
int a = 1, b = 2, c = 3;
// set the points of a, b, and c, to arr[0][0..2];
int *arr[] = {&a, &b, &c};
int n = sizeof(arr)/sizeof(arr[0]);
printf("%d %d\n", n, *arr[1]);
func(arr, n);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
3 2
3 2
Run Code Online (Sandbox Code Playgroud)