• 《C专家编程》第一天


    1.2 C语言的早期体验

    1)C语言的基本数据类型直接与底层硬件相对应。C语言不存在内置的复数类型。C语言一开始不支持浮点类型,直到硬件系统能够直接支持浮点数之后才增加了对它的支持。

    2)auto关键字显然是摆设。这个关键字只对创建符号表入口的编译器设计者有意义。它的意思是“在进入程序块时自动进行内存分配”,其他程序员不必操心auto这个关键字,它是缺省的变量内存分配模式。

    3)表达式中的数组名可以看作是指针。

    4)float被自动扩展为double。尽管ANSI C中情况不再如此,但最初浮点数常量的精度都是double型的,所有表达式中float变量总被自动转换成double。

    5)不允许嵌套函数(函数内部包括另一函数的定义)。

    6)register关键字。这个关键字能给编译器设计着提供线索,就是程序中的哪些变量属于热门(经常被使用),这样就可以把它们存放到寄存器中。但使用register关键字,虽然简化了编译器,却把包袱丢给了程序员。

    1.3 C预处理器

    它实现了三个主要功能:

    1)字符串替换:#define MAX_LENGHT 1000

    2)头文件包含:一般性的声明可以被分离到头文件中,并且可以被许多源文件使用。

    3)通用代码模板的扩展:#define max(x, y)      x>y?x:y

    在宏的扩展中,空格会对扩展的结果造成很大的影响。对宏的使用,要适量使用。

    1.9 ANSI C标准

    1)实参char* s与形参const char* p应该是相容的,标准库中所有的字符串处理函数都是这样子的。那么,为什么实参char **argv与形参const char **p不能相容?

    赋值是否合法,必须满足下列条件之一:

    a. 两个操作数都是指向有限定符或无限定符的相容类型的指针,左边指针指向的类型必须具有右边指针所指向类型的全部限定符!

    情况1:

    char *p = "akakka";

    const char *ch;

    ch = p;  //ok, char 和 char 是相容的类型,ch具有p的限定符(无)

    情况2:

    const float *f;   //f是一个指针,f指向const float。

    const char **ch;

    char **ca;

    由于char **和const char **都是没有限定符的指针类型,但是它们指向的类型不一样,前者指向char*,而后者指向const char*,因此它们是不相容的。

  • 相关阅读:
    vm8.0安装mac提示中断导致虚拟cpu进入终止状态……vm重启的解决办法
    WPF和WindowsForm下的按下Enter跳转下一个控件通用方法
    【Z】oledb读写excel出现“操作必须使用一个可更新的查询”错误
    关于系统编码的那点事
    【Z】使用OleDbCommandBuilder时出现“Insert into 语句的语法错误”
    Thread 初学(二)——线程同步
    Oracle中针对一张表建立触发器,并且触发器也处理同一张表的数据(ora04091 错误)
    Thread初学 (一)
    【Z】使用SQL Server的OPENROWSET函数
    13个绚丽的Jquery 界面设计
  • 原文地址:https://www.cnblogs.com/wiessharling/p/3938827.html
Copyright © 2020-2023  润新知