• C语言学习记录_2019.02.07


    • C99开始,可以用变量来定义数组的大小;例如,利用键盘输入的变量来定义数组大小;
    • 赋值号左边的值叫做左值;
    • 关于数组:编译器和运行环境不会检查数组下标是否越界,无论读还是写。
    • 越界数组可能造成的问题提示语:segmentation fault
    • 程序员的责任:有效的下标值:[0,数组的大小-1]
    • 例:如下字符可以作下标
    1. int a[255];
    2. a['A'] = 1;

    因为A的ascll码值小于255;

    • 安全的做法:数组使用之前初始化数组;
    • 函数的好处:把功能单纯且代码量大的部分封装为函数,提高可视性;
    • 代码复制:是程序质量不良的表现;
    • 初见函数:
    #include<stdio.h> 
    
    int get_sum(int start,int end)
    {
        int sum=0;
        int i=0;
        for(i=start;i<=end;i++)
        {
            sum+=i;        
        }
            printf("从%d到%d的和是%d
    ",start,end,sum);
    }
    
    int main()
    {
        get_sum(1,10);
        get_sum(20,30);
        get_sum(35,45);
        
        return 0;
    }

    其中,在函数定义中参数表(int x,int y )内可以直接定义变量;且属于函数内的尽量全都放到函数内完成变量定义和打印等;

    • 使用函数的优点:

    1.使程序变得更简短而清晰;   

    2.有利于以后的程序维护;便于团队开发分工合作

    3.可以提高程序开发的效率;

    4.提高了代码的可移植性。

    • 什么是函数:是一段代码,接收零个或多个参数,做一件事情,并返回零个或一个值;
    • 函数类型:当函数类型为void时,不返回任何值,无return;
    • return的两种写法

    (1)return;-------结束函数的运行;

    (2)return 表达式;------返回某一值;

    • 单一函数里面可以出现多个return语句;(缺点:违反了单一出口的设计理念)
    • C的编译器自上而下分析代码;
    • 函数的原型声名=函数的头+分号;且函数的原型声名里面可以不写参数的名字,如void sum(int ,int );
    • 新版本的C:函数的原型声名放在主函数的外面;
    • 形参与实参的类型不匹配是C语言传统上最大的漏洞,不严格。
    • C语言在调用函数的时候,永远只能传值给函数,不能倒传;每个函数有自己的变量空间,与其他函数没有关系;
    • 本地变量:函数内部的变量,参数;
    • 本地变量:可以定义在函数内或者块内;
    • 关于块(如if语句的大括号内):

    定义在块内的变量在块外无效;

    定义在块外的变量在块内有效;

    • 本地变量不会默认初始化;
    • 原型声名的时候参数表中一定不要空,即使没有输入参数最好也要写void;(但原则上可以不写,最好写)

    如void sum(void);

    • C语言不允许函数的嵌套定义;
    • 16进制:0x开头
    • 8进制:0开头
    • 直接量即等价量
    • 任何非0整数值都是逻辑的true,例:while(!e)其中!e等价于e==0等价

    于”当(!e)等于1的时候”;

    • void是保留字;IF,For不是保留字;
    • 错题本:&&运算时,当左边的为0时则不再进行右边的运算;
    • sizeof为静态运算符,编译时确定了值,运行时会忽略()中的运算,不再进行;例:如sizeof(i++),则不进行i++运算;
    • (double)(10/4*4)==8;因为未加.0,因此不会强制类型转换;
    hello world~
  • 相关阅读:
    linux 常用快捷键
    命令行远程链接
    mybatis参数错误 Parameter '×××' not found. Available parameters are [0, 1, param1, param2]
    mybatis延迟加载
    mybatis跨XML引用
    eclipse修改项目名称
    wait, WIFEXITED, WEXITSTATUS
    进程通信中如何进行值得传递?
    fork新建进程
    Ubuntu安装genymotion模拟器步骤
  • 原文地址:https://www.cnblogs.com/Bran-don/p/10355809.html
Copyright © 2020-2023  润新知