【发布时间】:2010-11-23 01:48:36
【问题描述】:
考虑:
char amessage[] = "now is the time";
char *pmessage = "now is the time";
我从The C Programming Language, 2nd Edition 中读到,上述两个语句的作用不同。
我一直认为数组是一种方便的方式来操作指针来存储一些数据,但显然不是这样......数组和 C 中的指针之间“不平凡”的区别是什么?
【问题讨论】:
-
我可能记错了,但我想指出,您可以在指针上使用 [] 表示法,在数组上使用 * 表示法。从代码的角度来看,唯一的大区别是 message 的值不能改变,所以 amessage++ 应该失败(但我相信 *(amessage+1) 会成功。我相信内部还有其他差异,但它们几乎不重要。
-
哦,通常(不是你提到的情况),数组自动分配内存,指针你必须分配你自己的内存。你的都应该指向作为程序加载的一部分分配的内存块。
-
与 K&R 一起(顺便说一句,这是一本很棒的书),我建议您阅读 pw2.netcom.com/~tjensen/ptr/cpoint.htm - 在此期间。
-
将其作为重复项关闭,因为我们有两个关于这个问题的“规范”常见问题解答。