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 []指针名
*/
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
- C++指针和数组和动态分配内存
- C语言复习 指针和动态分配内存
- vector中存储指针 和 二维数组动态分配内存
- C语言 二维数组(指针)动态分配和释放
- C语言 二维数组(指针)动态分配和释放
- C语言 二维数组(指针)动态分配和释放
- C 二维数组(指针)动态分配和释放
- C语言 二维数组(指针)动态分配和释放
- C语言 二维数组(指针)动态分配和释放
- C内存、数组和指针
- C和C++动态分配内存
- c动态分配 数组指针
- c和c++中的一维数组和二维数组的动态分配内存,以及参数传递
- 二维数组动态分配和释放(c/c++)
- c和指针中关于动态分配内存malloc和qsort的一个例子
- 指针和动态分配内存 (不定长度数组)------新标准c++程序设计
- C、C++指针、数组和内存分配
- C指针数组和数组指针的内存布局
- HDU 1255 覆盖的面积(线段树扫描线)
- #93 Balanced Binary Tree
- Java基础知识点整理Day_01
- listview优化
- JavaSE 多线程 线程间通讯—等待唤醒机制代码优化(背下来)
- C++指针和数组和动态分配内存
- 关于火狐浏览器IE浏览器的各种submit提交无效的问题
- 俄罗斯军事装备 苏——15
- 多布局的优化
- Spring配置数据源的三种方式 (dbcp,c3p0,jndi).
- 重建二叉树
- python爬虫中的 urllib 模块 浅析
- 搭建DAO层和Service层代码
- logback性能优化及源码分析