• 《C程序设计语言(第2版·新版)》第1章 导言


    实例和基本概念介绍。

    1.1 入门

    例1:打印hello world

      (UNIX:建立hello.c;通过命令cc hello.c编译得到可执行文件a.out;执行a.out即可打印出。不同OS编译、加载、运行规则有所不同。)

      每个程序必须在某个位置包含一个main函数;每个程序都从main的起点开始执行;main(ps:可有两个参数argc,argv)(ps:?C的main 输出可无int,C++必须int,也可能跟编译器有关);可函数调用(库函数或自编函数)

      "hello world "是字符串常量,可作为printf(不会自动换行)的输入参数;

       , , , ", \都是转义字符(习题ps:后可加3位八进制数字;加有些字符则是未定义的);

    1.2 变量与算术表达式

      注释:包含在之间,不能嵌套,编译忽略(ps:ANSI C 称作C89;C99标准增加行注释//)

      声明:类型名+变量表;C中所有变量必须先声明后使用;

      循环体是单语句则可不加括号;

      建议:每行一条语句,运算符两边加空格;

      printf()格式化输出,=表示占三个数字宽并且右对齐;

      浮点数打印宽度与精度:%6表示至少6字符宽;%.2表示打印两位小数(宽度不限);%3.0表示浮点数至少占3个字符宽且不带小数部分;%6.1类似;都是右对齐

      算术运算符的操作数均为整型则执行整型运算,若有一个浮点型则整型会被转换为浮点型;常数带小数点表示是浮点型;5/9=0, 5.0/9结果是浮点数:C及许多语言中整数除法会执行舍位(舍弃小数部分);

    建议:浮点常量取整数,书写时也加小数点。如9.0

    1.3 for循环

      C中一个通用规则:使用某种类型变量值的场合总可以使用该类型的表达式,如%6.1匹配的浮点值,如for后括弧里的三条语句;

    1.4 符号常量

      #define 名字 替换文本

      名字形式与变量相同,通常建议采用大写与变量区分;替换文本可以是任何字符序列;末尾无分号;名字不定义之后出现名字(不在引号内;不是其他名字的一部分)处都被替换;

    1.5 字符输入/输出

      标准库的I/O模型:无论文本从何处I/O,都按字符流处理;提供一次读/写一个字符的函数,如getchar和putchar:

      c=getchar();//从文本流读入下一个输入字符(通常来自键盘)并将其返回;int c可存储字符型并且范围足够大;返回EOF(定义在中的符号常量,不同于任何char类型的一个整型数)表示文件结束;

      类似上述赋值语句是一个表达式,具有一个值,可放入其他表达式如(c=getchar())!=EOF;

      putchar(c);//将整型变量c以字符形式打印(通常屏幕显示)

      putchar可与printf交替调用,输出与调用次序相同;

      ++n;更简练且通常效率更高;%ld用于输出long型;若long不够可将n声明为double,输出%.0f;

      注意:要考虑特殊情况(边界条件),比如循环初始判定就为假,那么仍应输出正确结果;

      字符常量:单引号字符,值等于机器字符集中对应数值,实质是小整型数另一写法;例如ASCII中'A'值为65;' '(是单个字符)为10但使用'A'可与字符集无关,比使用65好;

      赋值语句a=b=c=1;等价于a=(b=(c=1)),即赋值结合是从右至左;

      &&比||优先级高一级,它们连接的表达式从左往右求值,得到最终结果即终止求值,有时这很必要;

    1.6 数组

      int ndigit[10]包含ndigit[0]到ndigit[9]十个元素;[]内可是任何整型表达式;

    1.7 函数

      函数定义一般形式:

    返回值类型 函数名(0个或多个参数声明)

    {

    声明部分

    语句部分

    }

      return 任何表达式;可不带表达式,控制权交给调用者;主调函数也可忽略返回值;

      一般main返回0表示正常终止,非0则表示异常或出错;程序要向其执行环境返回状态;

      函数原型:main之前的声明语句,必须与定义一致,可忽略参数名;编译器据此检测函数调用中参数数目与类型是否错误;

    1.8 参数-传值调用

      C传递给调用参数的值存在临时变量(本地/私有副本)里而非在原变量中,这不同于Fortran或Pascal;C被调函数不能直接修改主调函数中的变量值,只能修改起私有副本中的值;欲修改则须用指针;数组名作为参数,并不复制数组,传入的是起始元素的地址,可通过下标访问或修改数组元素的值;

    1.9 字符数组

      函数默认返回类型是int,可省略;原始C语言中函数原型可不写输入参数;

      调用字符数组:

    int getline(char s[], int lim)

    void copy(char to[], char from[])

      C语言中字符串常量存储时末尾加''标志,%s格式规范要求必须此形式

    1.10 外部变量与作用域

      函数的局部变量(即自动变量)不能被其他函数直接访问,函数执行完毕退出时消失(特例:static存储类局部变量在多次函数调用之间值不变);自动变量未赋值时存的是无效值;

      外部变量:定义在所有函数外部,只能定义一次,可在全局范围内访问;函数可借此交换数据而不必用参数表;在程序执行期间一直存在;

      声明变量类型,编译器将为它们分配存储单元;

      函数使用外部变量前,(我的理解)若外部变量定义出现在该函数后或其他源文件中,则需使用extern(加在int 等前面)声明;否则可省略;

      通常把变量和函数的extern声明放在一个单独的头文件中,并在每个源文件开头#include;

      copy()这样的声明被看成老式声明,参数表将不做任何检查;ANSI C规定若需声明空参数表则须显式声明:void copy(void);

      “定义”与“声明”:前者创建变量或分配存储单元,后者只是说明变量性质,不分配存储单元;

      建议:外部变量不要滥用,会使得数据关系混乱,以及降低某些函数的通用性

  • 相关阅读:
    8-16 不无聊序列 non-boring sequences uva1608
    8-8 Ddfense Line uva1471 优先级队列
    8-12 Erratic Expansion uva12627
    8-4 Fabled Rooks uva11134
    8-10 Coping Books uva714
    8-13 Just Finish it up uva11093
    8-11 Add All uva 10954
    8-2 Building for UN Uva1605
    css定位.py
    处理HTML5视频播放.py
  • 原文地址:https://www.cnblogs.com/fFaXzz/p/4809217.html
Copyright © 2020-2023  润新知