C++指针和数组和动态分配内存

来源:互联网 发布:windows客户端开发 编辑:程序博客网 时间:2024/06/14 09:41
#include<iostream>
using namespace std;
//数组与指针
int main()
{
int  arry[] = {1,2,5,8,6,3,7};
int * a = arry;
cout << "反转前:" << endl;
for (int i = 0;i < (sizeof(arry) / sizeof(arry[0]));i++)
{
cout << *a++ << " ";
}
cout << endl;
int *p = arry;
int *q = p + sizeof(arry) / sizeof(arry[0]) - 1;
while (p<q)
{
int t = *p;
*p = *q;
*q = t;
p++;
q--;
}
cout << "反转后:" << endl;
for (int i = 0;i < (sizeof(arry) / sizeof(arry[0]));i++)
{
cout << arry[i] << " ";
}
cout << endl;


int c = 10,d=1;//引用使用案例
int &f = c;
f = d;//通过引用修改c的值
cout <<"C:"<< c << endl;
cout << "f:" << f << endl;


//动态内存分配用例
int *h = new int; //动态创建一个变量
cout << "input array length:" << endl;
cin >> *h;
cout << "input array elements:" << endl;
int *g = new int[*h]; //动态创建一个数组
for (int i = 0;i < *h;i++)
cin >> g[i]; //输入数组元素
cout << "output array elements:" << endl;
for (int i = 0;i < *h;i++)
cout << g[i] << " ";
cout << endl;
delete h;
delete[]g;


return 0;
}


//数组指针
//格式:数据类型(*指针名)[常量表达式],(*P)[5]
//指针数组,格式:数据类型* 指针名[常量表达式],指针指向数组第n号元素的地址




//指针和引用:大多数情况下具备同等的操作能力
//指针:指向一块内存,内容是所指内存的地址;
//引用:引用是某块内存的别名。
//选择使用、区别对待:
/*
1、引用必须与一个变量绑定,不存在没有任何引用目标的引用,使用中出现什么都不指向的情况就使用指针。若一个变量肯定指向一个对象,则选择引用
2、引用仅仅是一个变量实体的别名,因此使用之前,不需要检测其合法性,但指针使用之前必须检测指向的对象是否为空。
3、指针可以重新赋值,指向新的对象,但引用在初始化以后就不可以改变指向对象了。
4、指针可以 指向数组的地址来代替数组使用,但引用不可以代替数组,引用只能指向数组中的某个元素。
*/


//动态内存分配
/*
c++中通过关键字new和delete来实现程序的动态内存分配和释放。
格式:内存标识符 *指针名=new 类型标识符(初始值)  int *p=new int(10) 还可以为一个数组分配内存,int* p=new int[10],数组的长度为10
释放:delete 指针名,  数组释放:delete []指针名    
*/
1 0
原创粉丝点击