C语言中的数组实际上是指针吗?为什么不?在 C++ 中?
Normal C/C++(编程)中的指针是否可用于取消引用任何数量的值?它指向的内存没有任何限制吗?假设如果我声明 char *ptr
。然后我可以取消引用单个字符。还有 1000 个字符的字符串?任意数量的字符串? (为什么没有限制)?
C 和 C++ 编程是否相同?如果不是,那为什么不呢?
最佳答案
C 中的数组不是指针。数组是 [可能很大的] 连续内存块 - 对象由许多较小的对象组成,称为数组元素。
至于“为什么不”...数组曾经是 B 和 BCPL 语言中的指针 - C 的前辈和祖先。它们是 C 的第一个粗略版本 - “胚胎”C 中的指针。但是,C 语言想要引入聚合 struct
类型的概念。如果数组在 C 中实现为指针,那么包含数组的 struct
对象将需要非平凡的初始化(“构造”)并且将变得不可复制(即使使用 memcpy
) .这被认为是 Not Acceptable 。这就是导致重新设计 C 中数组概念的原因。您可以在 Dennis Ritchie 的 The Development of the C Language 上阅读它。页(参见“胚胎 C”部分)。
至于你可以通过指针访问多少内存......阅读指针算法。
C++ 中的原始数组实际上与 C 中的相同。
关于c++ - C或C++语言中的数组实际上是指针吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25214525/