-
new和delete是运算符,不是函数。
new -
new运算符的例子:
new int;//开辟一个存放整数的存储空间,返回一个指向该存储空间的地址(即指针)
new int(100);//开辟存放一个整数的空间,并指定该整数的初值位100,返回一个指向该存储空间的地址
new char[10];//开辟一个存放字符数组(包括10个元素)的空间,返回字符数组首元素的地址。
new int[5][4];//开辟一个存放二维数组(大小为5*4)的空间,返回首元素的地址
float *p=new float(3014159);//开辟一个存放单镜度数的空间,并指定该数的初值为3.14159,将返回的该空间的地址赋给指针变量。 -
new运算符使用的一般格式为 new 类型[初值],用new分配数组空间时不能指定初值,如果由于内存不足等原因而无法正常分配空间,则new会返回一个空指针NULL。
delete -
delete运算符使用的一般格式为
delete 指针变量 (对变量)
delete [] 指针变量 (对数组)
例如撤销上述第五个例子:delete p;
若将new char[]的地址赋给了指针pt,则撤销该数组:delete[] pt; -
例:
int main()
{
Student *p;//假设已声明了一个Student的结构体类型
p=new Student;
p->name="wang fang";
p->num=10123;
cout<<p->name<<'\n'<<p->num<<'\n';
delete p;
return 0;
- 例2:
#include <iostream>
using namespace std;
void fun(int *a[], int m){
//写一函数,输出整数矩阵的主对角线上最大元素坐标和值
int max=a[0][0],zb1=0,zb2=0;
for(int i=0;i<m;i++)
{
if(a[i][i]>max)
{
max=a[i][i];
zb1=i;
zb2=i;
}
}
for(int i=0;i<m;i++)
{
if(a[i][m-1-i]>max)
{
max=a[i][m-1-i];
zb1=i;
zb2=m-1-i;
}
}
cout<<'('<<zb1<<','<<zb2<<") "<<max;
}
int main()
{
int m;
cin>>m;
int *a[m];//指针数组
for (int i=0;i<m;i++)
{
a[i]=new int[m];
//
for(int j=0;j<m;j++)
{
cin>>*(a[i]+j);
//
}
//
}
fun(a,m);
return 0;
}