指针
指针和一维数组
1. 指针指向一维数组,当数组名使用
&a[i+1]==a+i+1
a[i+1]==*(a+i+1)
//数组求和
int main(){
int a[]{1,4,2,7,13,32,21,48,16,30};
int size=sizeof(a)/sizeof(*a);
int n,sum,*ip;
for(sum=0,n=0;n<size;n++) //下标法
sum+=a[n];
cout<<sum<<endl;
for(sum=0,n=0;n<size;n++) //指针法
sum+=*(a+n);
cout<<sum<<endl;
for(sum=0,p=a;p<a+size;a++) //移动指针法
sum+=*p;
cout<<sum<<endl;
return 0;
}
2. 动态内存分配,数组名
堆内存 :存放程序动态数据的内存空间,允许程序根据需要申请一定大小的空间,使用完毕可以释放该空间。
堆内存的分配关键字:new
堆内存的释放关键字:delete
①分配一个数据类型空间
分配: 数据类型 ***** 指针名=new+数据类型;
释放:delete 指针名;
例:
分配1个整型空间,值12
1)int *p = new int; *p = 12;
2)int *p = new int(12);
3)int *p = new int{1};
释放:delete p;
②分配多个数据类型空间
分配:数据类型 *指针名=new数据类型[下标表达式];
释放:delete []a;
例:
1)int *a = new int[10];
de