您可以有一个带有多维数组的函数签名,即:
my_fun(char my_array[][COLS]);
你可能会从中得到一些:
C 中指针和数组的教程,请参见第 7 章。
编辑:我怀疑你正在尝试做一些你不需要的事情。
#include <stdio.h>
#define ROWS 501
#define COLS 101
char my_arr[ROWS][COLS];
void foo(char arr[][COLS])
{
arr[44][23] = 'a';
printf("foo_1: %p\n", (void*) arr);
printf("foo_2: %p\n", (void*) &arr);
printf("foo_3: %p\n", (void*) arr[44]);
printf("foo_4: %p\n", (void*) &arr[44]);
}
int main(void)
{
foo(my_arr);
printf("my_arr[%03d][%03d] is %c\n", 44, 23, my_arr[44][23]);
/* my_arr[44][23] is now 'a', (also here) */
printf("main_1: %p\n", (void*) my_arr);
printf("main_2: %p\n", (void*) &my_arr);
printf("main_3: %p\n", (void*) my_arr[44]);
printf("main_4: %p\n", (void*) &my_arr[44]);
return 0;
}
示例输出:
foo_1: 0x804a040 <---+
foo_2: 0xbece91f0 |
foo_3: 0x804b19c <--------+
foo_4: 0x804b19c <--------+
my_arr[044][023] is a | |
main_1: 0x804a040 <----+ |
main_2: 0x804a040 <----+ |
main_3: 0x804b19c <---------+
main_4: 0x804b19c <---------+