【发布时间】:2013-07-05 04:36:51
【问题描述】:
我想知道为什么第一个代码有效,而第二个无效。
#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 *' 不兼容。
这两种数据类型有何不同以及为何不同?
【问题讨论】:
-
没错。数组有边界,而指针没有。
-
数组不是指针。就是这样。