C++动态数组再总结

简介:

动态数组是指在编译时不能确定数组长度,程序在运行时需要动态分配内存空间的数组。

1.变长一维数组


实现变长数组最简单的是变长一维数组,你可以这样做:

1
2
3
4
5
6
7
8
9
10
11
12
13
//文件名:array01.cpp
 
#include<iostream>
using namespace std;
int  main(){
int  len;
cin>>len; //用指针p指向new动态分配的长度为len*sizeof(int)的内存空间
 
int *p= new  int [len]
 
;...........delete[]p;
return0;
}

注意int*p=newint[len];这一句,你不能这样做:int p[len];C++编译器会报错说len的大小不能确定,因为用这种形式声明数组,数组的大小需要在编译时确定。

而且这样也不行:
int p[]=new int[len];

编译器会说不能把int*型转化为int[]型,因为用new开辟了一段内存空间后会返回这段内存的首地址,所以要把这个地址赋给一个指针,所以要用int*p=new int[len];

array01.cpp实现了一个变长的一维数组,但是要养成一个好习惯,就是注意要注销指针p,使程序释放用new开辟的内存空间。


当然使用C++标准模版库(STL)中的vector(向量)也可以实现变长数组:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//文件名:array02.cpp
 
#include<iostream>
#include<vector>
using namespace std;
 
int  main(){
 
int   len;
cin>>len;
vector< int >array(len); //声明变长数组
for ( int  i= 0 ;i<len;i++)
array[i]=i;
cout<<array[i]<< "\t" ;
}
 
return0;
}

2.动态指针数组


在构造函数中分配空间:
arr = new TYPE*[size];
for(int k=0; k<size;k++)
  arr[k] = new TYPE;
在析构函数中回收资源:
for(int k=0;k<size; k++)
  delete arr[k];
delete []arr; 

再来一个示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
int  main()
{
  int  ** arr;
  arr =  new  int * [ 3 ];
  for  ( int  k= 0 ; k< 3 ; k++)
  {
   arr[k] =  new  int ;
   cin>>*arr[k];  
  }
  for  ( int  k= 0 ; k< 3 ; k++)
   cout<<*arr[k]<< " " ;
  cout<<endl;
 
  for  ( int  k= 0 ; k< 3 ; k++)
   delete arr[k];
  delete []arr;
 
  return  0 ;
}



















本文转自朱先忠老师51CTO博客,原文链接: http://blog.51cto.com/zhuxianzhong/1531776 ,如需转载请自行联系原作者



相关文章
|
2月前
|
存储 网络协议 C++
C++ Vector容器详解:一站式指南,掌握动态数组的高效使用
C++ Vector容器详解:一站式指南,掌握动态数组的高效使用
159 2
|
11月前
|
程序员 C++
7.1 C/C++ 实现动态数组
动态数组相比于静态数组具有更大的灵活性,因为其大小可以在运行时根据程序的需要动态地进行分配和调整,而不需要在编译时就确定数组的大小。这使得动态数组非常适合于需要动态添加或删除元素的情况,因为它们可以在不浪费空间的情况下根据需要动态增加或减少存储空间。
52 0
|
12月前
|
C++
C++数据结构--01数组二次封装成动态数组 2021-04-23
C++数据结构--01数组二次封装成动态数组 2021-04-23
|
存储 程序员 编译器
C++使用指针,动态数组,指针做参数需要注意的问题等总结
C++使用指针,动态数组,指针做参数需要注意的问题等总结
C++使用指针,动态数组,指针做参数需要注意的问题等总结
|
编译器 C++
【C++】动态数组
那啥时候我们需要定义动态数组呢?
219 0
【C++】动态数组
|
C++ Python
c++入门教程:c++中的动态数组
c++入门教程:c++中的动态数组
|
C++
2014秋C++第16周 项目4参考 为动态数组扩容
课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂“贺老师课堂”同步展示,使用的帐号请到课程主页中查看。  【项目4-为动态数组扩容】  下面的程序,利用动态数组保存学生的成绩。当再有一批学生成绩需要保存时,要为之扩容(和吃自助一样,用多少,取多少,这好),请补充完整下面的程序,实现如图所示的功能。 i
1106 0
|
C++
关于C++动态数组的若干问题
#include using namespace std; int f(int n) { char x[n]; x[0] = 'a'; //测验了下长度为sizeof(类型)*n cout
714 0
|
1天前
|
C++
C++友元函数和友元类的使用
C++中的友元(friend)是一种机制,允许类或函数访问其他类的私有成员,以实现数据共享或特殊功能。友元分为两类:类友元和函数友元。类友元允许一个类访问另一个类的私有数据,而函数友元是非成员函数,可以直接访问类的私有成员。虽然提供了便利,但友元破坏了封装性,应谨慎使用。
34 9