我想知道为什么第一个代码有效,而第二个无效。
#include <stdio.h>
#include <string.h>
int main()
{
char *last, *first, *middle;
char pres[20] = "Adams, John Quincy";
char pres_copy[20];
strcpy(pres_copy, pres);
last = strtok(pres_copy, ", ");
printf("%s", last);
first = strtok(NULL, ", ");
printf("%s", first);
middle = strtok(NULL, ", ");
printf("%s", middle);
}
#include <stdio.h>
#include <string.h>
int main()
{
char last[20], first[20], middle[20];
char pres[20] = "Adams, John Quincy";
char pres_copy[20];
strcpy(pres_copy, pres);
last = strtok(pres_copy, ", ");
printf("%s", last);
first = strtok(NULL, ", ");
printf("%s", first);
middle = strtok(NULL, ", ");
printf("%s", middle);
}
我认为数组名称与指针相同。但是编译器做出了区分,因为它告诉我类型'char [20]'
和类型'char *'
不兼容。
这两种数据类型如何以及为什么不同?