输入输出

  • 格式控制串:%有效数值位数 . 小数位数 数据类型(%是格式控制标识符)
  • 数值输入:scanf( "格式控制串" ,地址表(如&a))
    • 将数据传入对应的内存地址上
    • 输入时不允许制定精度,可指定有效数值位数
    • 空格,到达有效数值位数,回车时结束输入
    • &是取址符
    • scanf表达式的值
      1. 为int,表示成功读入的变量个数
      2. 为Eof(-1),表示输入数据已经结束
  • 字符输入
    • getch():不显回,不回车
    • getche():显回,不必回车
    • getchar():回车后读入
  • 数值输出:printf( "格式控制串",变量表)
    • 输出的各个数据格式与变量表一一对应
  • 字符输出
    • putchar(变量名)

运算

  • 算术运算
    • 值的类型以操作数中精度高的类型为准(double > longlong > int > short > char)
    • 溢出时,溢出部分直接丢弃
    • ++a:返回值为+1后的值
    • a++:返回值为+1前的值
  • 关系运算
    • 与:同真为真
    • 或:同假为假
    • 非:取反
  • 优先级
    • ++... > *... > +... > 比较运算符 > && > || > =/+=...

流程控制

  • break:跳出循环,程序向下执行
  • continue:跳出本次循环,程序执行下次循环
  • freopen:重定向输入,由键盘输入重定向为文件输入
    • freopen( "url" , "r" , stdin )

数组

  • 一维数组
    • 定义:类型名 数组名[元素个数];
    • 数组内存空间:p + n * sizeof(数据类型);(p为内存始址,n为数组元素个数)
    • 存储方式:在内存中连续存放
  • 二维数组
    • 定义:类型名 数组名[行数][列数] 
    • 数组内存空间:p + n * m * sizeof(数据类型);
    • 存储方式:行优先/列优先,在内存中连续存放
  • 数组越界:对编译器而言,只是根据数组下标确定对应的内存空间所在位置,所以越界时编译器不会报错,但是可能会写入了别的变量的内存空间,从而导致程序出错。

函数

  • 定义:返回值类型 函数名( 参数类型 参数名,... ){ 函数体 }
  • 函数调用
    • 函数的调用语句前有函数的声明即可,不一定要有定义
    • 在函数调用前必须存在这个被调用的函数
  • 函数参数
    • 形参是实参的一个拷贝,形参改变不会影响实参,形参实参分别对应各自独立的内存空间(数组或引用传递除外)
    • 形参数组的首地址就是实参数组的首地址