开源企业网站源码,网站设计需要哪些技能,网站友情链接连接,2023一般纳税人企业所得税怎么算目录
1.使用new创建动态数组
2.使用动态数组#xff08;如何使用指针访问数组元素#xff09; 如果程序只需要一个值#xff0c;则可能会声明一个简单变量#xff0c;因为对于管理一个小型数据对象来说#xff0c;这样做比使用new和指针更简单。通常#xff0c;对于大型…目录
1.使用new创建动态数组
2.使用动态数组如何使用指针访问数组元素 如果程序只需要一个值则可能会声明一个简单变量因为对于管理一个小型数据对象来说这样做比使用new和指针更简单。通常对于大型数据如数组、字符串和结构应使用new。
例如假设要编写一个程序它是否需要数组取决于运行时用户提供的信息。如果通过声明来创建数组数组就在那里它占用了内存。在编译时给数组分配内存被称为静态联编意味着数组是在编译时加入到程序中的。但是使用new时如果在运行阶段需要数组则创建它如果不需要则不创建。还可以在程序运行时选择数组的长度。这被称为动态联编以为着数组是在程序运行时创建的。
下面来看看关于动态数组的两个基本问题如何使用C的new运算符创建数组以及如何使用指针访问数组。
1.使用new创建动态数组
只要将数组的元素类型和元素数目告诉new即可。必须在类型名后加上[]其中包含元素数目。
例如要创建一个包含10个int元素的数组
int *psome new int[10];
new运算符返回第一个元素的地址。上述例子中该地址被赋给指针psome。
当程序使用完new分配的内存块时应使用delete释放它们。对于使用new创建的数组应使用另一种格式的delete释放
delete [] psome;
[]告诉程序应释放整个数组而不仅仅是指针指向的元素。
注意delete和指针之间的方括号。如果使用new时不带方括号则使用delete时也不应带方括号。如果使用new时带方括号则使用delete时也应带方括号。
为数组分配内存的通用格式如下
type_name * pointer_name new type_name [num_elements];
使用new运算符可以确保内存块足以存储num_elements个类型为type_name的元素而pointer_name将指向第一个元素。
使用new和delete时应遵守以下规则
1.不要使用delete来释放不是new分配的内存。
2.不要使用delete释放同一个内存块两次。
3.如果使用new[]为数组分配内存则应使用delete[]来释放。
4.如果使用new为一个实体分配内存则应使用delete没有方括号来释放。
5.对空指针应用delete是安全的。
2.使用动态数组如何使用指针访问数组元素
如何使用动态数组呢
首先从概念上考虑这个问题。下面的语句创建指针psome它指向包含10个int值的内存块中的第1个元素
int * psome new int [10];
可以将它看作是一根指向该元素的手指。假设int占4个字节则将手指沿正确的方向移动4个字节手指将指向第2个元素。总共10个元素这就是手指的移动范围。因此new语句提供了识别内存块中每个元素所需的全部信息。
从实际角度考虑这个问题。由于psome指向数组的第1个元素因此*psome是第一个元素的值。对于第1个元素可以使用psome[0]而不是*psome对于第2个元素可以使用psome[1]依此类推。
//4.18演示了如何使用new创建动态数组以及使用数组表示法来访问元素
//它还指出了指针和真正的数组名之间的根本差别
#includeiostream
using namespace std;int main()
{double *p3 new double[3];//space for 3 doublesp3[0] 0.2;p3[1] 0.5;p3[2] 0.8;cout p3[1] is p3[1] endl;p3 p3 1;//指出了数组名和指针之间的根本差别。不能修改数组名的值但指针是变量可以修改。cout Now p3[0] is p3[0] and p3[1] is p3[1] endl;p3 p3 - 1;//指针指向原来的值程序就可以给delete[]提供正确的地址delete[] p3;system(pause);return 0;
}