今天真是可喜可贺了,课程设计的第二个检查点,今天检查代码量了。嗯,其实呢,到导师检查的时候完成量大致50%,可是今天课时结束后,我们代码的工作基本完成了,可以说是形成了demo了,看来超量完成任务是没问题啦~~~~~~~~~~
其实,今天完成的代码量不在少数,收获颇丰啊,总结一下~~~~~~
1、对“warning: missing braces around initializer”的处理:
在进行变换时,需要用到S变换表,而我使用数组来存储的:
char *arrnS1[][16] = {"1110","0100","1101","0001","0010","1111","1011","1000","0011","1010","0110","1100","0101","1001","0000","0111","0000","1111","0111","0100","1110","0010","1101","0001","1010","0110","1100","1011","1001","0101","0011","1000","0100","0001","1110","1000","1101","0110","0010","1101","1111","1100","1001","0111","0011","1010","0101","0000","1111","1100","1000","0010","0100","1001","0001","0111","0101","1101","0011","1110","1010","0000","0110","1101"};
char *arrnS1[][16] = {{"1110","0100","1101","0001","0010","1111","1011","1000","0011","1010","0110","1100","0101","1001","0000","0111"},"0000","1111","0111","0100","1110","0010","1101","0001","1010","0110","1100","1011","1001","0101","0011","1000"},"0100","0001","1110","1000","1101","0110","0010","1101","1111","1100","1001","0111","0011","1010","0101","0000"},"1111","1100","1000","0010","0100","1001","0001","0111","0101","1101","0011","1110","1010","0000","0110","1101"}};
上面的初始化方法就会引起该warning,下面那个就不会。看出区别了吗?实际上,我初始化了一个4行16列的二维数组,区别在于,下面那个在初始化时,对每行(16列)都加上了“{}”括起来,这样表示它们是一行,就不会出现warning了。
结论:对于初始化,需要严格按照定义,对于结构中的数组,必须加{}。
2、参数传递的问题
同组的伙伴有一部分是这样做的:
在两次输出out的值时,就会出错,而前面的输出完全正确,但是在“rewindProductChange”里又没有将out的值进行改变,为什么两次的输出不同呢?
经过思考,我们发现在“rewindProductChange”中,定义了形参“int *”,而并没有对其进行“new”,这样,在函数尾部虽然return了,但是随着函数的结束,该变量的内存空间也被释放(由于其内存空间跟函数的内存空间在一起)。我们的解决办法是,对其进行“new”,这样它的内存空间就独立于函数本身,即使函数退出,其内存空间也不会被释放。