私のコードは以下です:
#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]);
}
}
このコードをコンパイルすると、次の 2 つのコンパイル エラーが発生します。
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 *[]'
私の質問は、これら 4 つの機能の実際の違いは何ですか?
print_array
正常に機能しているのに、機能が機能しprint_pointer
なかったのはなぜですか?print_array2
print_array3