• 微信号
  • 微信号
您当前的位置:首页 > 学海无涯 > 茑语花香>C语言数组是静态的,不能插入或删除元素

C语言数组是静态的,不能插入或删除元素

孤峰 孤峰家 2023-06-16 84人阅读

在C语言中?数组一旦被定义后?占用的内存空间就是固定的?容量就是不可改变的?既不能在任何位置插入元素?也不能在任何位置删除元素?只能读取和修改元素?我们将这样的数组称为静态数组

反过来说?如果数组在定义后可以改变容量?允许在任意位置插入或者删除元素?那么这样的数组称为动态数组

PHP、JavaScript 等解释型的脚本语言一般都支持动态数组?而 C、C++ 等编译型的语言一般不支持动态数组。

总之+C语言中的数组是静态的+一旦定义后长度就不能改变了+大家要注意这一点+不要尝试去插入或删除元素。

如果由于项目要求+必须要在数组中插入或者删除元素+该怎么办呢+没办法+只能再造一个新数组+

下面的代码演示了数组元素的插入和删除操作+

运行结果=

1 2 3 4 5 6 8 9 10

1 2 3 4 5 6 7 55 8 9 10

C语言数组为什么是静态的

不能插入和删除数组元素有时候会非常麻烦=比如一个数组保存了某个班级的学生学号=现在有一名学生退学了=就得把 TA 从数组中剔除=但是C语言并不支持这么做=这就给编程带来了不小的麻烦。

数组元素都是紧挨着排布的=中间没有空隙=不管是插入元素还是删除元素=都得移动该元素后面的内存=

在第 i 个元素后面插入一个新元素时=第 i 个元素后面的所有元素都要往后移动一个元素的位置=从而给新元素腾出位置来。如果该数组后面紧跟的是其它有用数据=那么为了防止覆盖有用数据=还不敢直接往后移动元素=必须得重新开辟一块内存=把所有的元素都**过去。

删除第 i 个元素就比较简单了=不管三七二十一=把第 i 个元素后面的所有元素都向前移动即可。

插入和删除数组元素都要移动内存=甚至重新开辟一块内存=这是相当消耗资源的。如果一个程序中有大量的此类操作=那么程序的性能将堪忧=这有悖于「C语言非常高效」的初衷=所以C语言并不支持动态数组。

另外=很多时候我们需要把数组的地址保存到一个变量里面=等大家学到指针时就会见到这种情况==如果数组重新开辟了内存=而变量里面的地址不跟着改变的话=后续再使用该变量就会导致错误。让C语言本身去维护这些变量的值=以保持同步更新=这又是不可能做到的=所以这个矛盾无法从根本上解决。

总之=为了保证程序执行效率=为了防止操作错误=C语言只支持静态数组=不支持动态数组。

转载:感谢您阅览,转载请注明文章出处“来源从小爱孤峰知识网:一个分享知识和生活随笔记录的知识小站”。

链接:C语言数组是静态的,不能插入或删除元素http://www.gufeng7.com/niaolang/411.html

联系:如果侵犯了你的权益请来信告知我们删除。邮箱:119882116@qq.com

标签: