嵌入式linux下c程序设计021数组指针引用内存分配命名空间

上传人:人*** 文档编号:571161749 上传时间:2024-08-09 格式:PPT 页数:26 大小:714KB
返回 下载 相关 举报
嵌入式linux下c程序设计021数组指针引用内存分配命名空间_第1页
第1页 / 共26页
嵌入式linux下c程序设计021数组指针引用内存分配命名空间_第2页
第2页 / 共26页
嵌入式linux下c程序设计021数组指针引用内存分配命名空间_第3页
第3页 / 共26页
嵌入式linux下c程序设计021数组指针引用内存分配命名空间_第4页
第4页 / 共26页
嵌入式linux下c程序设计021数组指针引用内存分配命名空间_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《嵌入式linux下c程序设计021数组指针引用内存分配命名空间》由会员分享,可在线阅读,更多相关《嵌入式linux下c程序设计021数组指针引用内存分配命名空间(26页珍藏版)》请在金锄头文库上搜索。

1、嵌入式嵌入式Linux下下QT程序设计程序设计2本章主要内容数组指针引用指针与数组指针与引用动态存储分配命名空间3数组的概念数组是具有一定顺序关系的若干相同类型变量的集合体,组成数组的变量称为该数组的元素。数组属于构造类型。4一维数组的声明与引用一维数组的声明类型说明符 数组名 常量表达式 ; 例如:int a10; 表示 a 为整型数组,有10个元素:a0.a9l数组成员数组成员必须先声明,后使用。只能逐个引用数组元素,而不能一次引用整个数组例如:a0=a5+a7-a2*3数组名的构成方法与一般变量名相同。5一维数组的声明与成员引用#include using namespace std;i

2、nt main() int a10, b10; for(int i = 0; i 10; i+) ai = i * 2 - 1; b10 - i - 1 = ai; for(int i = 0; i 10; i+) cout a i = ai ; cout b I = bi endl; return 0;一维数组的存储顺序数组元素在内存中顺次存放,它们的地址是连续的。例如:具有10个元素的数组 a,在内存中的存放次序如下:数组名字是数组首元素的内存地址。数组名是一个常量,不能被赋值。a0 a1 a2 a3 a4 a5 a6 a7 a8a9a7一维数组的初始化可以在定义数组的同时赋给初值:在声明

3、数组时对数组元素赋以初值。例如:static int a10=0,1,2,3,4,5,6,7,8,9;可以只给一部分元素赋初值。例如:static int a10=0,1,2,3,4;在对全部数组元素赋初值时,可以不指定数组长度。例如:static int a=1,2,3,4,58声明 例:int i;int *ptr = &i;指向整型变量的指针概念 指针:指针:内存地址,用于 间接访问内存单元 指针变量:指针变量: 用于存放地址的变量20003ptr*ptri2000内存用户数据区变量 i变量 j变量 ptr362000200020043010引用 例1:i = 3; 例2:*ptr =

4、3;指针变量的概念指针变量的概念9指针的声明、赋值与使用#include using namespace std;int main() int i;/定义int型数iint *ptr = &i;/取i的地址赋给ptri = 10;/int型数赋初值cout i = i endl;/输出int型数的值cout *ptr = *ptr endl;/输出int型指针所指地址的内容return 0;10指针变量的算术运算指针与整数的加减运算指针p加上或减去n,其意义是指针当前指向位置的前方或后方第n个数据的地址。这种运算的结果值取决于指针指向的数据类型。p1n1等价于*(p1 + n1)指针加一,减一

5、运算指向下一个或前一个数据。例如:y=*px+ 相当于 y=*(px+) (*和+优先级相同,自右向左运算)引用 引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。例如对引用进行输出、赋值等操作。6 变量引用存储空间声明引用引用其实是变量的另一个名字。因此,与变量同样的,在使用引用前也需要对其进行声明,引用的声明语句如下:类型标识符 &引用名=目标变量名;例如,下列语句声明了一个对整型变量a的引用ra。int a; int &ra=a;/定义引用ra,它是变量a的引用,即别名声明ra是对整数的引用,初始化为引用a。在这里,要求a已经声明或定义。引用不是值,不占存储空间。

6、声明引用时,目标的存储状态不会改变。13指针与数组声明与赋值例:int a10, *pa; pa=&a0; 或 pa=a;通过指针引用数组元素经过上述声明及赋值后:*pa就是a0,*(pa+1)就是a1,. ,*(pa+i)就是ai.ai, *(pa+i), *(a+i), pai都是等效的。不能写 a+,因为a是数组首地址是常量。 14设有一个int型数组a,有10个元素。用三种方法输出各元素:使用数组名和下标使用数组名和指针运算使用指针变量#include using namespace std;int main() int a10 = 1, 2, 3, 4, 5, 6, 7, 8, 9,

7、 0 ;for (int i = 0; i 10; i+)cout ai ;cout endl;return 0;使用数组名和下标15#include using namespace std;int main() int a10 = 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 ;for (int i = 0; i 10; i+)cout *(a+i) ;cout endl;return 0;使用数组名指针运算16使用指针变量#include using namespace std;int main() int a10 = 1, 2, 3, 4, 5, 6, 7, 8, 9, 0

8、;for (int *p = a; p (a + 10); p+)cout *p ;cout endl;return 0;17指针与引用的区别 指针其实就是一个变量,和其他类型的变量是一个样子的,其是一个占用四字节的变量(32位机上),它与其他变量的不同之处就在于它的变量值是一个内存地址,指向内存的另外一个地方。而引用则是变量的一个别名。注意:一个指针变量可以指向NULL,表示它不指向任何变量地址,但是引用必须在声明的时候就得和一个已经存在的变量相绑定,而且这种绑定不可改变。指针与引用的联系引用在底层通过指针来实现一个引用变量,通过存储被引用对象的地址,来标识它所引用的对象引用是对指针的包装,

9、比指针更高级指针是C语言就有的底层概念,使用起来很灵活,但用不好容易出错引用隐藏了指针的“地址”概念,不能直接对地址操作,比指针更安全引用与指针的选择什么时候用引用?如无需直接对地址进行操作,指针一般都可用引用代替用更多的引用代替指针,更简洁、安全什么时候用指针?引用的功能没有指针强大,有时不得不用指针:引用一经初始化,无法更改被引用对象,如有这种需求,必须用指针;没有空引用,但有空指针,如果空指针有存在的必要,必须用指针;函数指针;用new动态创建的对象或数组,用指针存储其地址最自然;函数调用时,以数组形式传递大量数据时,需要用指针作为参数。动态申请内存操作符 newnew 类型名T(初始化

10、参数列表)功能:在程序执行期间,申请用于存放T类型对象的内存空间,并依初值列表赋以初值。结果值:成功:T类型的指针,指向新分配的内存;失败:抛出异常。例如:int *p;int *p;char *q;char *q;p = new int;p = new int;q = new char(a)q = new char(a)22释放内存操作符deletedelete 指针p功能:释放指针p所指向的内存。p必须是new操作的返回值。例如:int *p;p = new int;delete p;申请和释放动态数组分配:new 类型名T 数据长度 数据长度可以是任何表达式,在运行时计算释放:delet

11、e 指针p释放指针p所指向的数组。p必须是用new分配得到的数组首地址。例如:int *p;p = new int10;p0 = 1;.delete p;23命名空间:namespace命名空间可以将全局空间分为不同名称的范围。避免名字的冲突。例如:a.h 中有一个变量为sum。b.h中有一个变量叫sum。如果把两个头文件都包含进来。会造成名字冲突。解决办法使用不同的namespace。命名空间:namespace定义命名空间:namespace baozong成员1;成员2;使用名字空间:1,using namespace baozong;将所有成员放入范围中。2,using baozong:成员1;将baozong中的特定成员1放入该范围中。命名空间:namespace

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号