8.7 动态数组

如何定义n个元素的一维数组?

因为定义数组时,它的长度值(即上面的[]中的值)不能使用变量,只能是一个常量。

 

动态申请内存

new运算符----用于动态申请所需的内存空间

1.动态申请单个变量

格式:指针变量 = new 类型;   

注意:可以不给出所申请的变量的名称,只用指针指向它。

例如:动态申请一个double型变量,初值为100.0

double  *p;  //定义一个指向双精度型的指针变量p

p=new double;  //动态申请一个双精度的无名变量,将其首地址存放在p中

*p=100.0;    

上述代码等价于:

double *p=new double(100.0);

 

2.动态申请数组

格式:  指针变量 = new 类型[元素个数];

注意:上式中的元素个数可以是  常量/变量/表达式

 

举个例子:动态申请存放80个字符的数组

char *str;   //

str=new char[80];  //动态申请具有80个元素(每个元素都是字符类型)的这样

//的一块内存空间,或者说含80个元素的无名数组,将数组

//首地址保存在指针变量str中

再举个例子:动态创建n个元素的一维整型数组

3.动态释放申请的内存

(1)动态释放单个变量

格式:  delete 指针变量;   //释放单个动态变量

(2)动态释放数组

格式:  delete [] 指针变量;  //释放动态数组

 

编程实现:动态创建n个元素数组并且输出数组最大元素值

#include<iostream>

using namespace std;

void input(int *p,int n); //函数声明,函数用于输入数组元素

int findmax(int *p,int n); //函数声明,函数用于找数组最大值

int main()

{

       int n,*p;

       cout<<"请输入n值:";

       cin>>n;

       p=new int[n]; //动态申请含有n个元素的无名数组

       if(p==NULL){

        cout<<"空间申请失败";

        return 1;

       }

       else{

              input(p,n); //输入n个元素存入p指向的无名数组

        cout<<findmax(p,n); //求数组的最大值

           delete []p; //释放申请的空间

       }

       return 0;

}

//函数定义

void input(int *p,int n)

{

       int i;

       for(i=0;i<n;i++)

       {

              cin>>*p;

              p++;

       }

}

int findmax(int *p,int n)

{

       int max,i;

       int *q; //用于保存首地址,本例可以不用

       q=p;

       max=*q;

       q++;

       for(i=1;i<n;i++)

       {

        if(max<*q)

            max=*q;

        q++;

       }

       return max;

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值