方法一:形参给出第二维的长度。
例如:
#include
<
stdio.h
>
#include < math.h >
#include < ctype.h >
#include < string .h >
#include < stdlib.h >
void func( int n, char str[][ 5 ]){
int i;
for (i = 0 ; i < n; i ++ )
printf( " \nstr[%d]=%s\n " ,i,str[i]);
}
int main()
{
char * p[ 3 ];
char str[][ 5 ] = { " abc " , " def " , " ghi " };
func( 3 ,str);
return 0 ;
#include < math.h >
#include < ctype.h >
#include < string .h >
#include < stdlib.h >
void func( int n, char str[][ 5 ]){
int i;
for (i = 0 ; i < n; i ++ )
printf( " \nstr[%d]=%s\n " ,i,str[i]);
}
int main()
{
char * p[ 3 ];
char str[][ 5 ] = { " abc " , " def " , " ghi " };
func( 3 ,str);
return 0 ;
}
方法二:形参声明为指向数组的指针。
例如:
#include<stdio.h>
#include
<
math.h
>
#include < ctype.h >
#include < string .h >
#include < stdlib.h >
void func( int n, char ( * str)[ 5 ]){
int i;
for (i = 0 ; i < n; i ++ )
printf( " \nstr[%d]=%s\n " ,i,str[i]);
}
int main()
{
char * p[ 3 ];
char str[][ 5 ] = { " abc " , " def " , " ghi " };
func( 3 ,str);
return 0 ;
}
#include < ctype.h >
#include < string .h >
#include < stdlib.h >
void func( int n, char ( * str)[ 5 ]){
int i;
for (i = 0 ; i < n; i ++ )
printf( " \nstr[%d]=%s\n " ,i,str[i]);
}
int main()
{
char * p[ 3 ];
char str[][ 5 ] = { " abc " , " def " , " ghi " };
func( 3 ,str);
return 0 ;
}
方法三:形参声明为指针的指针。
例如:
#include<stdio.h>
#include
<
math.h
>
#include < ctype.h >
#include < string .h >
#include < stdlib.h >
void func( int n, char ** str){
int i;
for (i = 0 ; i < n; i ++ )
printf( " \nstr[%d]=%s\n " ,i,str[i]);
}
int main()
{
char * p[ 3 ];
char str[][ 5 ] = { " abc " , " def " , " ghi " };
p[ 0 ] =& str[ 0 ][ 0 ];
p[ 1 ] = str[ 1 ];
p[ 2 ] = str[ 2 ];
func( 3 ,p);
return 0 ;
}
#include < ctype.h >
#include < string .h >
#include < stdlib.h >
void func( int n, char ** str){
int i;
for (i = 0 ; i < n; i ++ )
printf( " \nstr[%d]=%s\n " ,i,str[i]);
}
int main()
{
char * p[ 3 ];
char str[][ 5 ] = { " abc " , " def " , " ghi " };
p[ 0 ] =& str[ 0 ][ 0 ];
p[ 1 ] = str[ 1 ];
p[ 2 ] = str[ 2 ];
func( 3 ,p);
return 0 ;
}