学习C语言第一天

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

计算机硬件系统

主机组成

  • CPU

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

    • ROM read only memory 只读

    • RAM random access memory 随机读写

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

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

外设部分

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

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

  • 内存:是CPU和硬盘数据沟通的桥梁。只保存程序运行所需的临时数据
  • 硬盘:用于保存程序运行中所需要持久化保存的数据。
  • CPU:负责程序运行过程中所要完成的运算。
    在这里插入图片描述

计算机软件系统

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

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

  • 向上:

    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语言关键字

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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编译四步骤

在这里插入图片描述

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

预处理: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;
      }
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值