C++学习笔记(3)

数组和指针

---int array[size],只有在size是宏定义或者const类型数据(在编译时就能得到变量的值)时才符合语法

---使用字符串进行字符数组的初始化,会隐式的加空字符\0

----存在一种特殊的void*指针,只能进行有限操作

----指针与引用的区别:(1)引用定义时必须初始化(2)指针的赋值是将一个指针与另一个对象关联,引用的赋值是将另一个对象的值赋给这个引用。指针:int *a,*b;引用 int &a=1;int &b=2;

---C++允许计算数组或对象超出末端的地址,但是不允许对地址进行解引用操作,但是再往后的地址不允许计算

----动态数组:动态数组在程序显式的释放内存之前都将一直存在

     动态数组的定义:int *p = new int[10];后面加上()则表示初始化为0,不加则不做初始化或者调用默认构造函数,初始化需要使用循环

---动态数组的内存释放:delete [] p;delete 释放数组时不加中括号可能会造成内存泄漏等错误

---多维数组初始化int ap[2][2]={ {1,2} , {3,4} };

使用预处理器进行调试:

---将调试语句用以下形式表示:

#ifndef NDEBUG

cerr<<......<<endl;

#endif

调试过程中若NDEBUG未定义,则执行语句,将信息写入cerr,若定义了则直接跳过并执行其它语句,多数编译器编译时都有命令行选项,例如CC -DNDEBUG main.c

预处理器预设了几种有用的常量:

__LINE__这会在程序编译时包含当前行号。
__FILE__这会在程序编译时包含当前文件名。
__DATE__这会包含一个形式为 month/day/year 的字符串,它表示把源文件转换为目标代码的日期。
__TIME__这会包含一个形式为 hour:minute:second 的字符串,它表示程序被编译的时间。

另一种调试技术是使用assert预处理宏,定义在cassert头文件中。使用方法 assert(express),若NDEBUG未定义,就求解条件表达式express,若为false则输出结果并终止程序,若存在非0值则不作任何操作。通常用来测试程序中不可能出现的情况。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值