2016-04-28 118 views
-4

这两个定义有什么区别?这两个定义有什么区别?

char *string = "MyString"; 
char string[] = "MyString"; 

尽我所知,第一个是一个指向字符串的指针。

+0

C没有字符串类型。通过学习语言基础知识可以找到答案。 – Olaf

+0

它们的类型和编译器为访问该对象而创建的间接引用的数量。 – Jens

+0

另请参阅http://stackoverflow.com/questions/30533439/string-literals-vs-array-of-char-when-initializing-a-pointer –

回答

1

首先是一个指针,指向一个字符串,第二个是与所述字符串文字的内容初始化一个数组(其中顺便说一句,当优化点恰好到string)。

第一个存在于程序存储器的只读段中,因此无法修改。

第二个是9个元素的数组,您可以修改9个元素中的任何一个,包括在您的问题的代码中未明确设置的termnating null字节。