cpp自学 day3

指针:用于保存变量的地址值

“指针就是一个地址”

定义指针:

int *p=&a;

使用指针:*p 表示找到指针地址值对应的数据

*p=1000;表明重新将那个值赋值为1000 相当于a=1000; 

int * 就是一个类型,指针类型

32位操作系统 sizeof(int */float */double */char *)都是占4个字节

64位则占8个字节空间

野指针:

代码编译没问题,生成就会报错

const修饰指针:

常量指针:const int *p = &a;

个人理解:地址值可以改,但指向的值不能更改

指针常量:int const *p = &a;

const既修饰指针又修饰常量:

利用指针访问数组:

int arr [4] = {1,2,3,4};

int *p = arr ;             //表示数组首地址。

因为是整形 所以数组元素后续地址值与首地址差4,则指针往后移动4个字节就可以,指到下一个元素。 即:p++;就可实现

可用指针遍历数组。

单元测试框架练习 背景: 2020年12月31日,某品牌拖地机器人由于时间戳被错误地置为13月1日,导致当日无法正常使用(https://www.zhihu.com/question/437791481/answer/1659932774)。 任务1: 给定以下一个用C++语言编写的NextDate函数的骨架,其功能为:在输入一个合法的日期后,计算该日期下一天的年、月、日并直接通过参数返回。请补全该程序(不得改变函数接口)。 void NextDate(int &year, int &month, int &day) { if(!ValidDate(year, month, day)){ return false; } else{ if(month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10){ if(day == 31){ ... } else{ ... } } else if(month == 4 || month == 6 || month == 9 || month == 11){ ... } else if(month == 12){ ... } else{ if((LeapYear(year) && day == 29) || (!LeapYear(year) && day == 28)){ ... } else{ ... } } } } 注意,用于判断输入合法性的ValidDate函数以及用于判断平年闰年的LeapYear函数请自行实现。 任务2: 使用GTest单元测试框架对补全后的NextDate函数进行测试。根据PIE模型的原理需要确保NextDate函数中所有的代码行均被执行过至少一次(整个if语句看作一行不考虑短路计算)。 注意,GTest单元测试框架的使用请通过中国大学MOOC平台线上自学。相关课程内容已发布。 任务3: 思考某品牌拖地机器人在2020年12月31日所出现的那个bug,推测一下可能的原因是什么,在NextDate函数中出现什么样的fault可能会导致这样的failure。给出这个错误版本的NextDate函数。 任务4: 思考什么样的测试用例可以检测任务3中构造的错误?使用GTest单元测试框架编写测试用例检测这个错误。 提交要求: 所有任务均以代码的形式提交。
06-25
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值