可以认为字符串是字符数组的一种特殊形式。
当然,如果是出于效率和空间的考虑,两者还是有区别的。
字符串处于常量空间, 字符数组一般处于堆栈空间。
最大的区别就是 char *s 与 char s[] 前者你不能去修改它的内容 (此处的内容是指字符串中的内容,如下例子)后者是可以修改的 , 编译器在初始化把字符串指针内容申明成了字符串常量是不可修改,而字符数组是可修改的;
例如 char *s = "i0i"; 要s[2] = '\0'; 是会报错的 而后者就没问题.
程序1
#include "stdafx.h"
#include <string.h>
int main()
{
char sep[] = "/ ";
char str[] = "ABC:DC/ABA/ABC";
char *flt =NULL, *date=NULL;
flt = strtok(str, " /");
date = strtok(NULL, sep);
printf("flt=[%s]\n", flt);
printf("str=[%s]\n", str);
printf("date=[%s]\n", date);
return 0;
}
程序1可以通过
而将char str[] = "ABC:DC/ABA/ABC";改为char *str = "ABC:DC/ABA/ABC";则不能通过
程序2
#include "stdafx.h"
#include <string.h>
int main()
{
char sep[] = "/ ";
char *str= "ABC:DC/ABA/ABC";
char *flt =NULL, *date=NULL;
flt = strtok(str, " /");
date = strtok(NULL, sep);
printf("flt=[%s]\n", flt);
printf("str=[%s]\n", str);
printf("date=[%s]\n", date);
return 0;
}