我了解到声明字符数组的传统方法如下:
char c[] = "John";
但是,我也注意到你可以声明为:
char *c = "John";
这究竟是如何工作的?我知道它与指针有关,但有人可以详细说明吗?任何帮助将不胜感激。
答案 0 :(得分:0)
在第一个示例中,c
是char
的数组。但在:
char *c = "John";
c
这里不是一个数组,而是指向字符串文字的指针(类型char *
)。指针和数组在C中是不同的类型。
如果你想了解指针和数组,下面是一个很好的链接:
答案 1 :(得分:0)
“字符串文字(C源中双引号字符串的正式术语)可以两种略有不同的方式使用......” http://c-faq.com/decl/strlitinit.html
答案 2 :(得分:0)
好的..我希望我不会在这里搞砸了,但是我看到它就像这样。
你通过写=“约翰”做的是你在程序存储器中的某处放置一个字符串,该字符串以'\ 0'结尾。
这就是为什么你的电话没有区别的原因。两者都在程序存储器中创建一个指向字符串开头的字符指针。
如果您要分配此内存,例如使用malloc()。指针指向运行时内存,而不是指向程序存储器中的某个位置。