• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

c/c++传统数组的缺点

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

专题:  动态内存分配 (所有高级语言,没有C里深刻)  

 

传统数组的缺点:  

  • 1.数组长度必须事先指定,而且只能是常整数,不能是变量    

例子 

int a[5];  //必须事先指定,而且只能是常整数    

int len = 5; int a[len];//error      

 

  • 2.传统形式定义的数组,该数组的内存程序员无法手动释放   数组一旦定义,系统为数组分配的内存空间就会一直存在,除非数组所在的函数运行终止。 

 

 

在一个函数运行期间,系统为该函数中的数组分配的空间会一直存在。直到该函数运行完毕时,数组的空间才会被系统自动释放。      

例子:

void f(void){int a[5]={1,2,3,4,5};....} 

//数组a 占20个字节的内存空间,程序员无法手动编程释放它,数组a只能在f()函数结束被系统释放 

 

  •   3. 数组的长度一旦定义,数组长度就不能再更改。   数组的长度不能在函数运行的过程中动态的扩充或缩小 
  •    4. 传统方式定义的数组不能跨函数使用 

 


  A函数定义的数组,只有在A函数运行期间才可以被其他函数使用, 但A函数运行完毕后,A函数中的数组将无法在被其他函数使用。 

 

#include<stdio.h> 
  void g(int * pArr, int len)  
{  
pArr[2] = 88; //parr[2]==a[2] 等价于  
    }     void f(void)  
{ 
int a[5] = {1,2,3,4,5}; //数组a 只在f()执行时有效  g(a,5); 
   printf("%d\n", a[2]); 
} 
  int main(void)  
{  
f(); // 结果: 88 
//printf("a[0] = %d\n", a[0]); // error  return 0; } 

 

为什么需要动态分配内存   很好的解决的了传统数组的4个缺陷

动态内存分配举例_动态数组的构造 难点 

 

 

 

 

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap