C++中数组的动态联编和静态联编

C++中数组的动态联编和静态联编

使用数组声明来创建数组时,将采用静态联编,即数组的长度在编译时设置:

int tacos[10];//static binding, size fixed at compile time

使用 new[]运算符创建数组时,将采用动态联编(动态数组),即将在运行时为数组分配空间,其长度也将在运行时设置。使用完这种数组后,应使用delete[1释放其占用的内存:

int size;
cin >> size;
int *pz=new int[size]; //dynamic binding,size set at run time
...
delete []pz; // free memory when finished

数组名和指针变量都是如此,因此对于指针和数组名,既可以使用指针表示法,也可以使用数组表示法。
下面是一些示例:

int *pt=new int [10]; //pt points to block of 10 ints
*pt =5; //set element number 0 to 5
pt[0]=6; //reset element number 0 to6
pt[9]= 44; //set tenth element (element number 9) to 44
int coats[10]; 
*(coats +4)= 12; //set coats[4]to 12

来看一看数组表达式 stacks[1]。C++编译器将该表达式看作是 * (stacks+1),这意味着先计算数组第2个元素的地址,然后找到存储在那里的值。最后的结果便是stacks[1]的含义(运算符优先级要求使用括号,如果不使用括号,将给 * stacks 加 1,而不是给stacks加1)。

对C++感兴趣的朋友点这里:C/C++课程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值