我想知道为什么第一个代码可以工作,但第二个代码不工作。将字符串赋值给一个变量
#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 *'
是不兼容的。
两种数据类型如何以及为什么不同?
没错。数组有界限,而指针则没有界限。 –
数组不是指针。就这样。 – soon
也检查此链接,http://stackoverflow.com/questions/13667191/lvalue-required-error-when-trying-to-increment-array – VoidPointer