1.初始化
char* pstr = "hello world";
char parr[] = "haha,xiexie";
"hello world"是字符串常量,存储在内存的常量区,不能被修改。
pstr是指向字符串常量的指针,其指向内容不可以被修改,因此不能当作参数传递。
初始化需要修改的字符串,应该使用
char parr[] = "haha,xiexie";
parr也可以看作指针,“haha,xiexie”存储在临时堆栈上,超出作用域会自动销毁,内容可以被修改。
parr是一个数组名,数组名是一个不可修改的常量,因此声明的时候必须初始化,初始化方式包括两种:
char s[] ={"beijing"};
char s[] = "beijing"
char s[] = {'b','e','i','j','i','n','g','\0'}
char* 和string相同,初始化只有一种方式:
char* ps="beijing";
2. char a[] = "hello";和char b[] = {‘h’,‘l’,‘l’,‘o’};二者是不一样的。
字符串长度:应该是
strlen
(),对a求长度为5,但是对b求长度是一个未知的大小,应该
strlen
()知道遇到
'\0'
才停止,所以a,b之间的长度不能比较
占用内存大小:sizeof
是大小,
sizeof
(a)=6,
sizeof
(b)=5,
另外,char c[]={"hello"},sizeof(c)=0;strlen=5