发布日期:2015-12-22 16:06 来源: 标签: 编程语言 C++教程 C++内存的分配与释放 C++运算符new与delete
本章我们主要学习C++中new、delete运算符操作:动态内存的分配与释放,下面我们就做一下具体讲解,希望大家多多支持中国站长网络学院。
new 运算符
1、指针变量 = new 数据类型, 如:int *p; p=new int;
2、new从内存中卫程序分配一块内存空间,并返回指向该内存的首地址,该地址存放于指针变量中new先分配内存,做复杂类型的构造delete释放
delete运算符
delete 指针变量; 如:delete p;
(1)用new获取内存空间,必须用delete进行释放
(2)对一个指针只能调用一次delete
(3)用delete运算符作用的对象必须是用new分配的内存间的首地址
注:C语言中有free()函数分配内存
new a;
delete []a;
#include <iostream>
using namespace std;
void main()
{
    int *p;
    p = new int;
    *p = 5;
    cout << *p;
    delete p;
}
可以在用new分配内存的同时进行初始化。使用形式为:
指针变量 = new 数据类型(初始值)
例如上面提到的
p = new int;
*p = 5;
也可以写成
p = new int(5);
用new建立数据类型的变量
指针变量 = new 数据类型[数组大小];
如:int *p = new int[5];
此时指针变量指向第一个数组元素的地址。使用new分配数组时,不能提供初始值。
作用域运算符:
通常情况下,如果全局变量与局部变量同名,那么局部变量在其作用域内具有较高的优先权
C语言规定只能在变量作用域内使用该变量,不能使用其他作用域的变量。而C++中提供了作用域运算符::,他能指定所需要的作用域。
注意:
不能用::访问函数中的局部变量
在C++语言中作用域运算符::还可以限定类的成员。
#include <iostream>
using namespace std;
float a=2.4;            //全局变量
void main()
{
    int a = 8;          //局部变量
    cout<<a<<endl;
    cout<<::a<<endl;        //::
    
}
引用
在C++语言中引用用于在程序的不同部分使用两个以上的变量名指向同一地址,不占用内存空间,引用申明的时候必须初始化,一旦初始化之后不能再对他赋另外的值,而指针不同第一个,指针是有空间的,第二个指针申明的时候可以不初始化然后指针一旦被赋值之后,还可以在赋值的。
#include <iostream>
using namespace std;
void main()
{
    int num = 50;
    int &ref = num;
    ref += 10;
    cout<<"num"<<num<<endl;
    cout<<"ref"<<ref<<endl;
    num += 40;
    cout<<"num"<<num<<endl;
    cout<<"ref"<<ref<<end;    
}

相关评论

专题信息
    C++是在C语言的基础上开发的一种面向对象编程语言,应用广泛。C++支持多种编程范式 --面向对象编程、泛型编程和过程化编程。最新正式标准C++于2014年8月18日公布。 其编程领域众广,常用于系统开发,引擎开发等应用领域,是至今为止最受广大程序员受用的最强大编程语言之一,支持类:类、封装、重载等特性! 本教程从基础讲解了C++语言,希望对大家有所帮助,望多多支持中国站长网络学院。