zoukankan      html  css  js  c++  java
  • C陷阱与缺陷的学习笔记

    1
    用单引号括起的字符实际代表一个整数,整数值对应于该字符在编译器中采用的字符集对应的序列值;
    双引号括起的字符串,代表的是一个指向无名数组起始字符的指针,该数组被双引号之间的字符和‘’初始化。
    对于'yes'这种形式的表示,不同的编译器采取的方式不同,但大都理解为"一个整数值,由y e s 所代表的整数值按照特定编译器实现定义的方式组合得到",vc采用用后一个字符覆盖前一个字符,最后得到的是最后一个字符的值

    2
    词法分析中的"贪心法则"----每一个符号应该包含尽可能多的字符,
    所以n-->0的含义是 n-- >0,而不是n- ->0;

    3
    注意分号结束的标志可能会引起错误,比如定义了
    struct log{ int date; int time}若没有分号 则struct会被编译器认为是主函数返回类型
    main(){}

    使用case分支语句时若没有用 break就要注释出来,防止被误认为写错;
    4
    c语言的数组需要注意的两点:
    1----c语言只有一维数组,而且数组的大小在编译期间就作为一个常数而存在,但是数组中的元素可以是任何对象,所以可以仿真出一个多维数组;
    2----通过数组可以获得指向下标为0 的元素的指针,有关数组的其他操作看上去是下标运算,其实是指针运算,因此可以根据指针的行为来确定下标的行为
    如*(a+i)即为下标为i的元素的引用,这种写法如此常用,因此被简记为a[i];

    数组作为参数毫无意义,因此c将自动地将作为参数的数组声明转换成相应的指针声明
    int strlen(int a[])
    int strlen(int *a)等价

    main(int argc, char *argv[])强调argv指向某数组的起始元素的指针,数组的元素为字符指针类型
    main(int argc, char **argv)等价
    我们需要记住的是,复制指针并不同时复制指针所指向的数据。

    5
    为main函数提供返回值,默认的是int,一般情况下系统会根据返回值来判断程序是否执行成功,0代表执行成功;

    若函数仅被文件内的其他函数调用就可以声明为static,因为它对外部是不可见的

    6
    库函数setbuf(stdout,buf)
    程序输出有两种形式,一种是即时输出,会造成较高的系统负担,另一种是先暂存起来,然后大块写入的方式,通过setbuf控制在实际 的写之前控制产生数据的量
    输出库的stdout----buf缓冲区---实际写入到stdout
    main()
    {
    int c;
    char buf[BUFSIZ];
    setbuf(stdout,buf);
    while((c=getchar())!=EOF)
    putchar(c);
    }
    问题是buf被清空是在main结束之后,实际在此之前buf已经被释放;
    解决方法1---在main外面声明static char buf[BUFSIZ];
    动态分配缓冲区,在程序中不主动去释放分配的缓冲区,所以在main函数结束时并不会释放缓冲区,
    char  *malloc();
    setbuf(stdout, malloc(BUFSIZ));

    ANSI c标准 ----C99最新的c语言标准

    处理64位数据可以用C99标准的long long来表示
    typedef和#define有什么区别?
    一般来说最好使用typedef,能够正确处理指针类型,
    #define的优点是可以使用#ifdef来处理头文件的重复包含;
    另外不能在定义typedef之前使用它;
    函数调用只能出现在局部非静态变量中;

  • 相关阅读:
    CISCO实验记录九:NAT地址转换
    CISCO实验记录八:ACL访问控制
    【零基础】风格迁移之deep-painterly-harmonization的安装和使用
    CISCO实验记录七:OSPF
    【零基础】看懂“深度学习”的优势
    数学专业各学科视频网址
    Flash网站Loading制作
    30张图 讲述真实的人性
    【UXPA工作坊小记】郎学明:做更“有用”的用户研究
    科学训练传播训练营///第一期:科学问题的复杂性///参后感觉
  • 原文地址:https://www.cnblogs.com/fickleness/p/3148981.html
Copyright © 2011-2022 走看看