c++ - C或C++语言中的数组实际上是指针吗

标签 c++ c pointers

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/

相关文章:

c++ - 如何在类中声明这个函数

c++ - 将引用转换为 C++ 中的指针表示

c++ - 将元素插入左倾的黑红树c++

c - STM32F3如何使用MODBUS TCP?

c - 用空格分割字符串

c - 如何在文本文件中写入可以在 C 中读取和取消引用的地址(指针)

c++ - 如何在不使用循环的情况下在 vector 中添加一定数量的元素 C++

c - 指针的增量与整数的增量不一样吗?

c - 指针如何在 C 中工作 "under the hood"?

c - 我的代码中是否存在内存泄漏? (使用指针存储字符串)