Difference between char[] and char*?
Possible Duplicate:
C - Difference between “char var[]” and “char *var”?
Difference between char a[]=“string”; char *p=“string”;
有人能解释char[]和char*到底有什么区别吗?例如
1 | char name[] ="earth"; |
和
1 | char *name ="earth"; |
谢谢
1 2 | char namea[] ="earth"; char *pname ="earth"; |
一个是数组(名称
另一个是指向单个字符的指针(名称
虽然前者往往会衰退为后者,但情况并非总是如此。试着对他们两个都做一个
数组的大小是数组的大小(六个字符,包括终端空值)。
指针的大小取决于指针的宽度(4或8或其他)。
你也可以用
1 | (1) char name[] ="earth"; |
1 | (2) char *name ="earth"; |
在C++中,这是不赞成的,它应该是EDCOX1,24。
用
1 | char *name ="earth" |
不能修改名称的内容。
因此
1 | name[2] = 'A'; |
char*以' '字符结尾,而name[]的大小固定。
将导致SegFault。
Initializing the variable takes a huge performance and space penalty
for the array. Only use the array method if you intend on changing the
string, it takes up space in the stack and adds some serious overhead
every time you enter the variable's scope. Use the pointer method
otherwise.