我的代码如下:
#include <stdio.h>
void print_pointer(char **str);
void print_array(char *str[20]);
void print_array2(char str[20][20]);
void print_array3(char str[][20]);
int main(int argc, char *argv[])
{
char str[20][20] = {"test1", "test2", "test3"};
print_pointer(str);
print_array(str);
print_array2(str);
print_array3(str);
return 0;
}
void print_pointer(char **str)
{
int i = 0;
for(; i < 20; i++)
{
printf("%s", str[i]);
}
}
void print_array(char *str[20])
{
int i = 0;
for(; i < 20; i++)
{
printf("%s", str[i]);
}
}
void print_array2(char str[20][20])
{
int i = 0;
for(; i < 20; i++)
{
printf("%s", str[i]);
}
}
void print_array3(char str[][20])
{
int i = 0;
for(; i < 20; i++)
{
printf("%s", str[i]);
}
}
当我编译这段代码时,遇到了两个编译错误:
error C2664: 'print_pointer' : cannot convert parameter 1 from 'char [20][20]' to 'char ** '
error C2664: 'print_array' : cannot convert parameter 1 from 'char [20][20]' to 'char *[]'
我的问题是这四个功能之间的实际区别是什么?
为什么print_array
和print_pointer
功能不能工作,print_array2
而print_array3
可以正常工作?