C++菜鸟常见错误整理(第一天)

        今天回顾了一下C++,发现了许多以前概念的不清,还有混淆的知识。在此写下以供大家参考借鉴

        本人目前还是学生,能力有限,有不足或者错误的地方欢迎大家指正,谢谢大家!

1、int main()   {  int x;}这里x的默认值几?

     这里x是局部变量,那就是以前残留在堆栈里的随机值。int x;  如果是定义的全局变量或者静态变量,未初始化的话就是0;在类里面,int x的默认值也是0。

2、关于endl

     endl是一个特殊值,称为操纵符,将它写入输出流时,具有输出换行的效果,并刷新与设备相关联的缓冲区。

3、extern 声明

      extern 声明不是定义,也不分配存储空间。事实上,它只是说明变量定义在程序的其他地方。程序中变量可以声明多次,但只能定义一次。extern int i;  只有当 extern 声明

位于函数外部时,才可以含有初始化式。(extern int i=9; )

4、预防多次包含同一头文件

#ifndef SALESITEM_H
#define SALESITEM_H
………………//代码
#endif
条件指示 #ifndef SALESITEM_H:测试 SALESITEM_H 预处理器变量是否未定义。如果 SALESITEM_H 未定义,那么 #ifndef 测试成功,跟在 #ifndef 后面的所有行都被执

行,直到发现#endif。相反,如果 SALESITEM_H 已定义,那么 #ifndef 指示测试为假,该指示和 #endif 指示间的代码都被忽略。

5、const

const int a = 1;现在a是个常量,不允许被修改,非 const 变量默认为 extern。要使 const 变量能够在其他的文件中访问,必须地指定它为 extern。

6、指针*(p++)+=100;

      int a[]={1,2,3,4};  int *p=a;    cout<<*p;     *(p++)+=100;    cout<<*p;    cout<<*(p-1);  这里第一个*p输出的是a[0]就是1,*(p++)+=100;应该是*p=*p+100;p++;所以,此时p指向

的是a[1],也就是说,现在a[0]是101,而a[1]还是2。所以函数最后输出1,2,101。

7、关于for循环的i++,  两段代码,略有不同

     int main(){  int a,b;  for(a=0,b=0;a<2&&!b++;a++)   {a++;}  cout<<a<<b;  return 0;}

     int main(){  int a,b;  for(a=0,b=0;a<2&&!b++)    {a++;}   cout<<a<<b;   return 0;}

     函数一:for循环,先初始化a=0,b=0,然后判断:a=0<2,!b=1,然后b自增为1,然后进入循环体,a自增为1;在执行for循环中的a++,a自增为2,不符合a<2的条件,循环结

束。此时a=2,b=1

    函数二:for循环 ,先初始化a=0,b=0,然后判断:a=0<2,!b=1,然后b自增为1,然后进入循环体,a自增为1;继续执行for循环,a<2,!b=0,不符合循环条件,不执行循

环体,但b++还会执行,所以b=2。此时a=1,b=2

8、一段程序,我是没理解,先记下来

     int i=1,  void main (){int i=i;}  i变量从声明那一刻开始就可见了,main()里面的i不是1,因为他和main外面的i无关,他是一个未定义的值。

      今天就到这里,有不足的地方还请指正,谢谢大家!

    

   

 

你可能感兴趣的:(C++,cocos2d-x)