zoukankan      html  css  js  c++  java
  • 《C程序设计语言》笔记 (一)导言

    1.1入门

    打印hello,world

    #include <stdio.h> //包含标准库的信息
    main() //定义名为main的函数,不接受参数值
    {
        printf("hello, world\n"); //调用printf函数以显示字符序列 \n代表换行符
    }

    代码中用双引号括起来的字符序列叫字符串或字符串常量 "hello, world\n"

    printf函数不会自动换行,如果需要换行需要加\n

    \t 制表符
    \b 表示回退符
    \" 双引号
    \\ 反斜杠本身

    1.2变量与算术表达式

    打印华氏温度和摄氏温度表

    #include <stdio.h>
    main()
    {
        float fahr,celsius;
        int lower,upper,step;
    
        lower = 0; //温度表下限
        upper = 300; //温度表上限
        step = 20; //步长
    
        fahr = lower;
        while(fahr <= upper){
            celsius = 5.0*(fahr-32.0)/9.0;
            printf("%3.0f\t%6.1f\n",fahr,celsius);
            fahr += step;
        }
    }    


    printf中的转换说是%3.0f 表明打印浮点数至少占3个字符宽,且不带小数点和小数部分
    %6.1f表明至少占6个字符宽,且小数后面有一位数字

    int和float类型的取值范围取决于具体的机器。对于int类型,通常为16位,范围在-32768~+32767之间,也有用32位表示的int
    float通常为32位,它至少有6位有效数字,取值范围一般在10的-38次方~10的+38次方

    %d按照十进制整形打印
    %6d按照十进制整形打印,至少6个字符宽
    %f按照浮点数打印
    %6f按照浮点数打印,至少6个字符宽

    1.3for语句

    #include <stdio.h>
    main()
    {
        int fahr;
        for(fahr=0;fahr<=300;fahr+=20)
            printf("%3d\t %6.1f\n",fahr,(5.0/9.0)*(fahr-32));
    }

    1.4符号常量

    #define 指令可以把符号名定义为一个特定的字符串
    #define 名字 替换文本

    #include <stdio.h>
    #define LOWER 0
    #define UPPER 300
    #define STEP 20

    main()
    {
    int fahr;
    for(fahr=LOWER;fahr<=UPPER;fahr+=STEP)
    printf("%3d\t%6.1f\n",fahr,(5.0/9.0)*(fahr-32));
    }

    符号常量通常用大写字母
    注意,#define指令行的末尾没有分号

    1.5字符输入/输出

    getchar函数从文本流中读入下一个输入字符,并将其作为结果值返回
    putchar(c)打印一个字符

    1.5.1文件复制

    #include <stdio.h>
    main()
    {
        int c;
        c=getchar();
        while(c != EOF){
            putchar(c);
            c=getchar();
        }
    }

    字符在键盘、屏幕或其他任何地方无论以什么形式表现,它在机器内部都是以位模式存储的
    char类型专门用于存储这种字符型数据,当然任何整形也可以用于存储字符型数据。因为某些潜在的重要原因,我们在些使用int类型
    EOF( end of file,文件结束)定义在头文件<stdio.h>中,是一个整形数.具体是什么不重要,只要它和任何char类型的值都不相同即可.


    1.5.2字符计数

    #include <stdio.h>
    main()
    {
        long nc;
        nc=0;
        while(getchar!=EOF)
            ++nc;
        printf("%ld\n",nc);
    }

    ctrl+d 可以输入EOF

    1.5.3行计数

    #include <stdio.h>
    main()
    {
        int c,nl;
        nl=0;
        while((c=getchar())!=EOF){
            if(c=='\n')
                nl++;
        }
        printf("%d\n",nl);
    }    

    单引号中的字符表示一个整形值,该值等于此字符在机器字符集中对应的数值,叫字符常量


    1.6数组


    声明一个数组
    数据类型 数组名[数组长度];
    int arr[10]; //声明一个10个整形构成的数组。
    在C语言中数组下标是从0开始


    1.7函数


    函数定义的一般形式为:

    返回值类型 函数名(0个或多个参数声明)
    {
        声明部分
        语句序列
    }

    函数定义可以以任意次序出现在一个源文件或多个源文件中,但同一函数不能分割存放在多个文件中
    我们通常把函数定义中圆括号内出现的变量叫形式参数,而把函数调用中与形式参数对应的值叫实际参数

    return 后面可以跟任何表达式,
    return 表达式函数不一定都有返回值,不带表达式的return语句将控制权返回给调用者,但不返回有用的值

    main本身也是函数,因此也可以向其调用都返回一个值,该调用者就是程序的执行环境,一般来说,返回值为0表示正常终止,返回值为非0表示出现异常情况或出错结束


    1.8参数 --传值调用


    在C语言中,所有函数参数都是"通过值"传递的.
    如果是数组参数,传递给函数的值是数组起始元素的位置或地址---它并不复制数组元素本身。在被调用函数中,可以通过数组下标访问或修改数组元素的值

    1.9字符数组


    字符数组是C语言中最常用的数组类型
    字符数组以字符 '\0'(空字符,其值为0)标记字符串的结束

    1.10外部变量与作用域

    main函数中的变量是main函数的私有变量或局部变量

    由于它们是在main函数中声明的,因此其他函数不能直接访问它们,其它函数中声明的变量也一样
    函数中的每个局部变量只在函数被调用时存在,在函数执行完毕退出时消失,这也是其他语言通常把这类变量称为自动变量的原因
    除自动变量外,还可以定义所有函数的外部变量,也就是说,在所有函数中都可以通过变量名访问这种类型的变量
    外部变量必须定义在所有函数外,且只能定义一次,定义后编译程序将为它分配存储单元
    在每个需要访问外部变量的函数中,必须声明相应的外部变量
    声明时可以用 extern显式声明,也可以通过上下文隐式声明
    如果外部变量的定义出现在使用它的函数之前,那么在那个函数中就没有必须extern声明
    如果程序在多个源文件中,而某变量在file1文件中定义,在file2和file3文件中使用,那么需要使用extern声明
    人们通常把变量和函数的extern声明放在一个单独的文件中(习惯上叫头文件),并在每个源文件的开头使用#include把所要用的头文件包含进来
    后缀为.h约定为头文件的扩展名

    定义表示创建变量或分配存储单元,而"声明"指的是说明变量的性质,但并不分配存储单元

  • 相关阅读:
    关于日志造成的频繁的IO
    PHP
    gitignore
    Linux安装gradle
    Ambari和ClouderManager分析对比
    原生hadoop生态系统组件安装文档
    hive的数据类型和数据模型
    hive概述
    使用binlog和canal从mysql实时抽取数据
    canal概述
  • 原文地址:https://www.cnblogs.com/dafume/p/7780923.html
Copyright © 2011-2022 走看看