这篇博客主要介绍 C 语言的基础知识。

  • C 语言分为 C89 和 C99 两个标准,分别于 1989 年和 1999 年发布。

  • 所有 C 语言程序必须记录在以 .c 作为扩展名的文件中,这种文件叫做源文件。

  • C 语言程序中可以使用加减乘除计算符号:

    • +: 加法

    • -: 减法

    • *: 乘法

    • \: 除法

  • C 语言中每个处理步骤后面都应该使用分好(;)跟其它步骤分隔,每个以分好结尾的处理步骤叫做一条语句。

  • C 语言中使用大括号({})对语句进行分组,绝大多数语句都必须属于某个分组,大括号是可以嵌套的,其层次没有限制,任何语句都不可以跨越大括号,大括号中的语句组成为一个语句块。每个顶级大括号都必须有其名称,不同的顶级大括号名称不同。

  • C 语言中必须有一个叫做 main 的顶级大括号,称为主函数,程序从主函数的第一条语句开始执行,当主函数的最后一条语句结束时,程序结束。

  • C 语言中指定一些小写英文单词作为关键字/保留字,它们都有特定的作用。

  • C 语言中使用大量的名称区分不同的东西,这些名字统称为标识(zhì)符,通常采用英文单词(或汉语拼音等),标识符命名规则:

    • 第一个字符必须是英文字母或下划线(_)。

    • 后面的字符可以是英文字母、下划线或数字。

    • 标识符是大小写敏感的。

    • 关键字不能用来做标识符使用。

    • 标识符的长度没有限制,通常不使用单个字符,当标识符太长时,C89中截取前31个字符为有效,C99中截取前63个字符有效。

  • C 语言的书写规范:

    • 一行中最多包含一条语句。

    • 不同层次的语句使用缩进进行区分,层次越深缩进越长。

    • 在适合的地方使用空格和空行。

    • 标识符要使用驼峰式(如 MyName)或下划线式(如 my_name)编写。

  • C 语言中提供了一组标准函数用来解决常见问题,每个标准函数都有自己的名字,不同的标准函数名字不同,使用标准函数需要编写函数调用语句。

  • 注释:

    • 单行注释: 以 // 开头,注释内容不能换行,单行注释不能写在语句中间。

    • 多行注释: 以 /* 开头,以 */ 结尾,注释内容允许换行,并且多行注释可以写在语句中间。

#include <stdio.h>    /*头文件*/
int main()
{            //主函数
  int number = 0,integer = 0;//变量声明
  return 0;//返回0
}
#include "01demo.h"
int /*我是多行注释*/main() { //我是单行注释
  return 0;
  /*
  我是多行注释
  呵呵
  */
}
  • 主函数有两个形式参数(Formal Argument),第二个形式参数表示一组相关字符串,第一个形式参数表示相关字符串的个数:
返回值类型 main(int argc,char* argv[]) {
	return 指定类型的数据;
}
/*
    主函数行参
*/
#include <stdio.h>

int main(int argc,char* argv[]) {
    int num = 0;
    for (num = 0;num <= argc -1;num++) {
        printf("%s\n",argv[num]);
    }
    return 0;
}
  • 程序的所有相关数据都放置在内存里,变量对应了内存中的某个存储位置,通过变量可以操作对应的存储位置中的数据,一个变量只能存储一种类型的数据。

  • 变量声明语句: 通过指定变量类型、变量名称来声明变量的语句,不同变量的名称不同,多个同类型的变量可以使用一条语句同时声明,用逗号(,)隔开,在声明变量时可以直接赋值,称为变量的初始化。

  • 赋值语句: 使用赋值运算符(=)向一个左值(通常是变量)对应的存储位置中放置数据。

  • 将变量当作数据使用就可以从变量中读取数据,读取数据的操作不会影响其内容。

/*
  变量练习1
  声明变量、赋值
*/
#include <stdio.h>
int main(){
  int number = 0,integer = 2,age = 1;//变量声明语句,并赋初值初始化,同类型可以使用一条语句
  char name = 'a';
  number = 8//赋值语句
  number = 2 + 5;//赋值语句
  //9 = number;语句错误
  printf("number = %d\n",number);//读取并打印number的值为7(即2+5)
  integer = number + 3;//赋值语句
  printf("number + 3%d\n",integer);//读取并打印integer的值为10,读取number值不会改变number数据
  integer = 6.8;//赋值语句,类型不匹配,integer被赋值为6
  printf("integer值为%d\n",integer);//读取打印integer的值为6
  return 0;
}
/*
  变量练习2
  打印123456789
*/
#include <stdio.h>
int main(){
  int num = 0;
  num = 1;
  printf("%d",num);
  num = num + 1;
  printf("%d",num);//1
  num = num + 1;
  printf("%d",num);//2
  num = num + 1;
  printf("%d",num);
  num = num + 1;
  printf("%d",num);
  num = num + 1;
  printf("%d",num);
  num = num + 1;
  printf("%d",num);
  num = num + 1;
  printf("%d",num);
  num = num + 1;
  printf("%d",num);
  printf("\n");
  return 0;
}
/*
  变量练习3
  打印
  1 X 9 =9
  2 X 8 =16
  3 X 7 =21
  4 X 6 =24
  5 X 5 =25
*/
#include <stdio.h>
int main(){
  int num1 = 0,num2 = 0;
  num1 = 1;
  num2 = 9;
  printf("%d X %d = %d\n",num1,num2,num1 * num2);
  num1 = num1 + 1;
  num2 = num2 - 1;
  printf("%d X %d = %d\n",num1,num2,num1 * num2);
  num1 = num1 + 1;
  num2 = num2 - 1;
  printf("%d X %d = %d\n",num1,num2,num1 * num2);
  num1 = num1 + 1;
  num2 = num2 - 1;
  printf("%d X %d = %d\n",num1,num2,num1 * num2);
  num1 = num1 + 1;
  num2 = num2 - 1;
  printf("%d X %d = %d\n",num1,num2,num1 * num2);
  return 0;
}
---------------------------------------------------------
符号/表示除法如果参与除法运算的两个数是整型,则计算结果也是整型

符号%表示取余(取模)

(详见 运算符 部分)
---------------------------------------------------------
09var.c
/*
  变量练习3
  打印
  54321
  4321
  321
  21
  1
*/
#include <stdio.h>
int main(){
  int num1 = 0,num2 = 0;
  num1 = 54321;
  printf("%d\n",num1);
  num2 = 10000;
  printf("%d\n",num1 % num2);
  num2 = num2 / 10;
  printf("%d\n",num1 % num2);
  num2 = num2 / 10;
  printf("%d\n",num1 % num2);
  num2 = num2 / 10;
  printf("%d\n",num1 % num2);
  return 0;
}
---------------------------------------------------------
10var.c
/*
  变量练习3
  num1 num2对调
*/
#include <stdio.h>
int main(){
  int num1 = 3,num2 = 7;
  printf("num1是%d,num2是%d\n",num1,num2);
  /*
  num1 = num1 + num2;
  num2 = num1 - num2;
  num1 = num1 - num2;
  */
  num1 = num2 - num1;
  num2 = num2 - num1;
  num1 = num2 + num1;
  printf("num1是%d,num2是%d\n",num1,num2);
  return 0;
}