C中的指针和数组 - 非常困惑

时间:2013-08-19 22:13:48

标签: c arrays pointers memory

我了解到声明字符数组的传统方法如下:

char c[] = "John";

但是,我也注意到你可以声明为:

char *c = "John";

这究竟是如何工作的?我知道它与指针有关,但有人可以详细说明吗?任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:0)

在第一个示例中,cchar的数组。但在:

 char *c = "John";

c这里不是一个数组,而是指向字符串文字的指针(类型char *)。指针和数组在C中是不同的类型。

如果你想了解指针和数组,下面是一个很好的链接:

http://www.torek.net/torek/c/pa.html

答案 1 :(得分:0)

“字符串文字(C源中双引号字符串的正式术语)可以两种略有不同的方式使用......” http://c-faq.com/decl/strlitinit.html

答案 2 :(得分:0)

好的..我希望我不会在这里搞砸了,但是我看到它就像这样。

你通过写=“约翰”做的是你在程序存储器中的某处放置一个字符串,该字符串以'\ 0'结尾。

这就是为什么你的电话没有区别的原因。两者都在程序存储器中创建一个指向字符串开头的字符指针。

如果您要分配此内存,例如使用malloc()。指针指向运行时内存,而不是指向程序存储器中的某个位置。