指针与c++基本原理

来源:互联网 发布:同城送花 知乎 编辑:程序博客网 时间:2024/05/17 03:28

 计算机程序在存储数据时必须跟踪的3种基本属性:信息存储在何处,存储的值为多少,存储的信息时什么类型。 一种策略是定义一个简单变量,另一种是以指针为基础。
 指针与c++基本原理:面向对象编程与传统的过程性编程的区别在于,oop强调在运行阶段(而不是编译阶段)进行决策,运行阶段是程序正在运行时,编译阶段是指编译器将程序组合起来。运行阶段决策好比度假时,去哪些景点参观取决天气和心情,而编译阶段决策更像是不管什么条件下,都坚持预先计划的安排。
 运行阶段决策提供灵活性,可以根绝当时的情况进行调整,如数组声明,程序编译时候就设定好了,就是编译阶段决策。程序不一定需要多少容量的数组,在运行阶段确定数组长度,必须在程序运行创建数组,使用关键字new请求正确数量的内存以及使用指针跟踪新分配的内存的位置。OOP通过决策推迟到运行阶段,使程序更加灵活。在程序运行后,可以这次告诉他只需要20个元素,还可以下次告诉他需要205个元素。
 在运行阶段决策并OOP独有的,但是使用C++编写这样的代码比使用C语言简单。
 指针声明:char的地址和double的地址看上去没什么两样,但二者使用的字节数不同,存储值内部格式也不同,指针声明必须指定指向指针指向的数据类型。
 和数组一样,指针基于其他数据类型,int* p1,p2(int* 是一种类型,指向int的指针,创建一个指针p1和一个int变量p2),对于每个指针变量名,都需要使用一个*。
声明了一个指针变量 int *p后,p的址址即告确定,但p的值是随机值,会指到哪里去谁也不知道,所以叫“野指针”。只有对p人为进行赋值后,p的值才可控,特别的,对p的第一次人为赋值,称为初始化。
举例来说:
(1)&i:就是i的地址。其实也是一个数值,只是省了你自己查找i地址的麻烦。
(2)i:如是i是一个整型变量,并且其数值作为地址是有意义的,就可以
(3)NULL:就是0。0作为地址可以吗?当然可以。写成int *p=0也一样。

0 0
原创粉丝点击