列一些我个人要注意的一些地方。我会不断对此文进行增加和修改。
1。数组作为函数参数的,要注意sizeof的大小
注意下面代码中的几个sizeof结果
void Func1( char str[100])
{
cout <<"Func1: sizeof(str)=" << sizeof(str) << endl;
}
void Func2( char* str)
{
cout <<"Func2: sizeof(str)=" << sizeof(str) << endl;
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
int _tmain(int argc, _TCHAR* argv[])
{
char str[100];
cout <<"Main: sizeof(str)=" << sizeof(str) << endl;
Func1( str );
Func2( str );
return 0;
}
结果应该是100, 4, 4。
在函数中数组名作为函数形参时,在函数体内,数组名失去了本身的内涵,仅仅是一个指针。
2。MFC中ASSERT与VERIFY的异同
相同点,ASSERT与VERIFY中的条件失败,仅在debug下中断程序并记录;Release版本中不会出现。
不同点,ASSERT中的条件语句在Release中根本就不存在(没有执行),VERIFY中的条件语句执行了,只不过就算失败也不会中断程序。
1。数组作为函数参数的,要注意sizeof的大小
注意下面代码中的几个sizeof结果
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
在函数中数组名作为函数形参时,在函数体内,数组名失去了本身的内涵,仅仅是一个指针。
2。MFC中ASSERT与VERIFY的异同
相同点,ASSERT与VERIFY中的条件失败,仅在debug下中断程序并记录;Release版本中不会出现。
不同点,ASSERT中的条件语句在Release中根本就不存在(没有执行),VERIFY中的条件语句执行了,只不过就算失败也不会中断程序。