void func(float* state[6], float* err[6][6]);
int main()
{
float state[6];
float err[6][6];
func(&state, &err);
return 0;
}
以下两个声明都是相同的......
char *message = "Hello World!";
char message[13] = "Hello World!"; /* "Hello World!" is 12 chars + \0 termination */
数组是指针,只是区别对待。因此,要将message
其中任何一个声明中的地址传递给 func1(char*) 或 func1(char[]),您可以说func1(message);
传递了地址。
数组只能作为地址传递给第一个值。运行以下程序来证明这一事实。
#include <stdio.h>
void func(float* array);
int main()
{
float state[6];
int i = 0;
printf ( "Sizeof state: %d\n", sizeof(state) );
for ( i = 0; i < 6; i ++ ) { state[i] = i+1; }
func(state);
return 0;
}
void func ( float *array )
{
printf ( "Sizeof float: %d\n", sizeof(float) );
printf ( "Sizeof array: %d\n", sizeof(array) );
printf ( "Value in array[0] = %f\n", array[0] );
printf ( "Value in *array = %f\n", *array );
array++;
printf ( "Value in array[-1] = %f\n", array[-1] );
printf ( "Value in array[0] = %f\n", array[0] );
printf ( "Value in *array = %f\n", *array );
}
因此,您的调用func(float* state[6], float* err[6][6] );
是声明一个 2 级指针和一个 3 级指针。类似的功能,但相同的调用,可以实现func(float **state, float ***err );
不用说,不是你的目标。