欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

学习C语言第一天

程序员文章站 2022-06-06 17:07:21
...

机器生汇编、汇编生B、B生C、C生万物。

计算机硬件系统

主机组成

  • CPU

    • 控制器、运算器、寄存器、预取器、MMU
  • 内存储器

    • ROM read only memory 只读

    • RAM random access memory 随机读写

    内存储器靠“电信号”来存储用户的数据

    • 缺点:数据断电没,不能持久存储
    • 优点:数据读写速度快

外设部分

  • 输入设备:读入数据。如鼠标、键盘、摄像头、麦克风等
  • 输出设备:写入数据。如扬声器、屏幕、打印机等
  • 外存储器:
    • 硬盘:靠“磁信号”存储数据。断电数据依然存在,数据的读写速度慢。(靠硬盘旋转、振臂伸缩、磁头等机械操作)
    • 固态硬盘:使用固态电子存储芯片阵列制成的硬盘,采用集成电路存储。 (但依然没有内存快)

CPU-内存-硬盘之间的关系

  • 内存:是CPU和硬盘数据沟通的桥梁。只保存程序运行所需的临时数据
  • 硬盘:用于保存程序运行中所需要持久化保存的数据。
  • CPU:负责程序运行过程中所要完成的运算。
    学习C语言第一天

计算机软件系统

操作系统:是管理计算机硬件与软件资源的计算机程序。——本质:程序!

  • 向下:
    提供驱动程序,驱使硬件工作。——管理硬件。

  • 向上:

    1. 给用户提供访问途径,访问硬件。
    2. 图形界面:普通用户、程序员借助鼠标实现。
    3. 终端界面:主要开人员。普通用户较少使用。系统调用:开发人员专用。
    4. 系统调用:开发人员专用。

编译器和语言

  • 编程语言:
    • 由特殊字符、字母组成。控制计算机硬件。
  • 编译器:
    • 将人类可读易懂的计算机语言,转换为 CPU 能识别的机器语言(二进制101010101)。
    • 不同语言,语法不同,有不同的编译器。

C语言标准

C89 C90 C99 C11

  • 可将C语言的标准理解为C语言说明书,但并没有强制约束力。

  • 常见C/C++编译器

    1. Borland C++ 宝蓝公司
    2. Intel C++ 英特尔编译器
    3. VC++ 微软公司
    4. g++编译器 (gcc是编译套件),Linux默认使用的编译器,对标准支持最好。

C语言关键字

学习C语言第一天
学习C语言第一天
学习C语言第一天

HelloWorld

// #: 特殊字符,用来指定关键字。 后接 include 表示引入/包含文件。
// include : 包含,用来指定 头文件名
// <>: 表示使用C语言标准库头文件。
// stdio.h :头文件名。std : standard的缩写 标准。 i:input。 o:output
// 此行,服务于 printf函数。———— 用来说明printf。
#include <stdio.h>
/*
int: 程序执行结束,返回整数。此 int 制约了 return 后的数据类型。
main:C语言入口函数。main函数开始,C程序开始,main函数结束,C程序结束。
		一个c项目中,只能有一个main函数。
(): main函数的参数。
void:参数为空。 ———— 无参!!!
{ }: 包裹 main 函数的函数体。
*/
int main(void)
{ // 程序开始了。
    printf("hello C语言!\n");  // 打印数据到屏幕。
    /*
    printf函数,C标准库函数,作用:用来向屏幕打印数据。
    "hello C语言!\n" : 打印字符串数据到屏幕上。
    \n : 表示换行。
    */
    return 0;  // 受 int 影响。 
} // 程序结束了。

注释

  • 单行注释:
    • 使用 // 注释内容。
  • 多行注释:
    • /* 注释内容 */
    • 多行注释之间不能相互嵌套。 多行、单行之间可以相互嵌套。
  • 条件编译实现注释:
    • #if 0 注释内容 #endif

gcc编译四步骤

学习C语言第一天

  1. 预处理
    1. 展开头文件。 —— 不检查语法错误。可以展开任意文件。
    2. 替换注释。—— 替换为空行或空格。 得到 .i 预处理文件。
  2. 编译
    1. 逐行检查语法、词法错误。 —— 是 gcc 编译4步骤中,耗时最长的阶段。
    2. 如果无错误,将C程序翻译成 汇编指令。得到 .s 汇编文件。
  3. 汇编
    1. 翻译:将汇编指令翻译成对应的 二进制编码(机器语言)。得到 .o 目标文件。
  4. 链接
    1. 合并启动例程。(启动main函数)
    2. 引入 头文件对应的库文件。 —— 得到可执行文件。
      学习C语言第一天

预处理:gcc -E hello.c -o hello.i

编 译:gcc -S hello.i -o hello.s

汇 编:gcc -c hello.s -o hello.o

链 接:gcc hello.o -o hello.exe

标准main函数种类

C语言中,标准的main函数书写形式只有两种:有参main、无参main

  • 无参main函数

    int main(void)
    {
        return 0;
    }
    
  • 有参main函数

    int main(int argc, char *argv[])
    {
        return 0;
    }
    

System函数

  • 作用:将系统命令使用 system 函数,在程序中,执行起来。
#include <stdio.h>		// 服务于 printf函数。 说明 printf 函数。
#include <stdlib.h>		// 服务于 system函数。 说明 system 函数。
#include <Windows.h>	// 服务于 Sleep函数。 说明 Sleep 函数。

int main(void)
{
	printf("----------测试1\n");
	printf("----------测试2\n");
	printf("----------测试2\n");
	printf("----------测试2\n");
	printf("----------测试2\n");

	// system("pause");		// 执行暂停命令
	// system("calc");		// 使用命令启动计算器。
	// system("mspaint");		// 使用命令启动画图工具。

	Sleep(2000);		// S 大写。参数为 毫秒。 2000 --  2秒

	system("cls");		// 清屏命令

	return 0;
}

编程练习

  1. 在 VS 中编写 .c 程序。向屏幕输出: "C语言编程之本,月薪过万不是梦!"

    #include <stdio.h>
    
    int main(void)
    {
        printf("C语言程序之本,月入过万不是梦!");
        return 0;
    }
    
  2. 在 VS 中编写 .c 程序。程序启动后,可以将 windows 的系统的计算器启动。

    #include <stdlib.h>
    
    int main(void)
    {
        system("calc");
        return 0;
    }
    
  3. 在 VS 中编写 .c 程序。实现如下功能:

    1. 先打印输出:“你好!我是C语言”,要求打印完能换行。

    2. 程序睡眠 5 秒后, 打开一个空记事本。【提示】:使用命令:notepad 可以启动记事本。

      #include <stdio.h>
      #include <stdlib.h>
      #include <Windows.h>
      
      int main(void)
      {
          printf("你好!我是C语言\n");
          Sleep(5000);
          system("notepad");
          return 0;
      }