Chinaunix首页 | 论坛 | 博客
  • 博客访问: 17072
  • 博文数量: 6
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 86
  • 用 户 组: 普通用户
  • 注册时间: 2013-06-04 12:28
个人简介

当牛人牛到一定的境界,可能就会重归和平,所以我还是一个一直梦想成为hacker的屌丝愤青!

文章分类
文章存档

2013年(6)

我的朋友

分类: C/C++

2013-06-07 16:20:16

每个人都是从新手过来的,一路走来都是在不断谜茫中学习、犯错、再谜茫、再学习中一步步成长起来的,也许有的问题和错误看起来很傻,但却是犯了,要勇敢面对,下面奉上我自己学习的成长笔记:
1、printf ... 等一系列格式化输出时,一定要注意格式,比如字符串用%f输出时就会出现段错误
2、strerror -- 功能:通过标准错误的标号,获取系统错误信息或打印用户程序错误信息,获得错误的描述字符串。
    例:printf("errno[%d] errmsg[%s]",errno,strerror(errno));
3、strtol是atoi的增强版,尽量用strtol代替atoi
4、函数形参指针,在函数里面不能修改,会改变外部传入buffer的值
    例:
int fun(char *ps)
{
      char *str = ps;   
      str[5] = '\0';
      sprintf(ps,"hello world !");
      return 0;
 }
 危险危险危险!!!! 恶补指针,函数传入参数为指针时,若不能在函数内修改的,养成习惯,请在前面加const修饰!!
5、变量和指针的本质都是变量,变量存放的是值,指针存放的值是地址,所有对变量引用时得到的是变量值,对指针引用时
6、fnmatch ???文件通配
7、 int remove(const char *filename);
    功 能: 删除一个文件,相当于unlink函数,但是如果它的filename参数是一个目录的话,其作用就相当于rmdir函数。
    回值:如果删除成功,remove返回0,否则返回EOF(-1)
8、在初始化结构体是要加&取地址,不然初始化不成功
    例:struct Tlist  stlist;
    memset(stlist,0x00,sizeof(stlist)); 这个如果编译检查严格的话,编译时通不过的,但是很多时候编译器执行检查能让其通过,但实际不但不能初始化成功,而且还很危险
    正确初始化方法:  memset(&stlist,0x00,sizeof(stlist));
9、在头文件中定义的static int a ; 变量,对于每一个引用此变量的源文件来说,此变量都是一个文件内部的全局变量,而不是整个工程的全局变量,在一个文件内改变a的值,不会影响工程中其他的文件中的a的值
10、指针接收返回值是需特别小心
 例:
int fun1()
{
    int  iRet = 0; 
    .....
    return iRet ;
}
 int fun( int *outPara)
{
    *outPara = fun1();
     return 0;
}
 当用*outPara去接收 int fun1()的返回值是,有时会导致程序非法退出,以前的一个程序就是这么用的,运行差不多一年了没任何问题,但昨天突然就非法退出,找了半天问题没找出来,还亏了别人解救才发现这个;小伙伴们以后千万要小心这个问题啊,因为这个不是必然会导致程序坏死,很多时候专门去测试的时候还测不出来,但是说不定啥时候系统内存不稳或莫名的情况就会导致程序坏死了,导致严重后果,遇到这种情况的时候,如果是linux系统或Unix系统,就得借助core文件gdb调试,bt打出堆栈信息找问题了
阅读(788) | 评论(0) | 转发(1) |
0

上一篇:我的学习札记—Linux篇,更新中...

下一篇:没有了

给主人留下些什么吧!~~