前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用一句Halle认识C 语言

用一句Halle认识C 语言

作者头像
苏州程序大白
发布2022-05-25 11:36:32
3600
发布2022-05-25 11:36:32
举报
文章被收录于专栏:用户8907256的专栏

用一句Halle认识C 语言

✨博主介绍

💂 个人主页:苏州程序大白 💂 个人社区:CSDN全国各地程序猿 🤟作者介绍:中国DBA联盟(ACDU)成员,CSDN全国各地程序猿(媛)聚集地管理员。目前从事工业自动化软件开发工作。擅长C#、Java、机器视觉、底层算法等语言。2019年成立柒月软件工作室,2021年注册苏州凯捷智能科技有限公司 💅 有任何问题欢迎私信,看到会及时回复

初识 C 语言

章节概要:C 语言的特点、计算机工作原理、高级计算机语言、编译器、编程步骤、C 编程机制

特点
  • 设计特性 C 语言融合了计算机科学理论实践的控制特性 C 语言的设计理念让用户轻松完成自顶向下的规划结构化编程模块化设计
  • 高效性 C 语言充分利用计算机的优势,因此程序更紧凑运行速度很快 C 语言具有通常汇编语言才具有的微调控制能力,可以更具具体情况微调程序以获得最大运行速度最有效地使用内存
  • 可移植性 C 是可移植的语言,这意味着,在一种系统中编写的 C 程序稍作修改不修改就能在其他系统上运行 注意程序中针对特殊硬件设备(如显示监视器)或操作系统特殊功能编写的部分通常不可移植 C 语言与 UNIX 关系密切,UNIX 系统通常会将 C 编译器作为软件包的一部分 供个人计算机使用的 C 编译器很多,因此在各个版本的操作系统上,都可以找到合适的 C 编译器
  • 强大而灵活 C 语言功能强大而灵活 UNIX 操作系统、其他语言(FORTRAN、Perl、Python、Pascal)等的编译器解释器都是用 C 语言编写
  • 面向程序员 C 语言是为了满足程序员的需求而设计的,程序员可以利用 C 访问硬件操控内存中的位 大多数 C 实现都有一个大型的库,包含众多有用的 C 函数,可以让程序员更加方便地使用 C 语言
通俗了解计算机工作原理
  • 简而言之,计算机的工作原理是:如果希望计算机做某些事,就必须为其提供特殊的指令列表(程序),确切地告诉计算机要做的事以及如何做。你必须用计算机能直接明白的语言(机器语言)创建程序。这是一项繁杂、乏味、费力的任务
高级计算机语言与编译器
  • 高级编程语言(如 C 语言)以多种方式简化了编程工作。首先,不必用数字码表示指令;其次,使用的指令更贴近你如何想这个问题,而不是类似计算机那样繁琐的步骤
  • 编译器是把高级语言程序翻译成计算机能理解的机器语言指令集的程序,在计算机看来,高级语言指令就是一堆无法理解的无用数据。由此,程序员进行高级思维活动,而编译器则负责处理冗长乏味的细节工作
使用 C 语言的 7 个步骤
  • C 是 编译型语言,我们把编写 C 语言的程序分解为七个步骤: 1、定义程序的目标 2、设计程序 3、编写代码 4、编译 5、运行程序 6、测试与调试程序 7、维护和修改代码
编程机制
  • 用 C 语言编写程序时,编写的内容被储存在文本文件中,该文件被称为源代码文件(source code file)。大部分 C 系统,都要求文件名以.c结尾
  • C 编程的基本策略是,用程序把源代码文件转换可执行文件(其中包含可直接运行的机器语言代码) 典型的 C 实现通过编译链接两个步骤来完成这一过程。编译器把源代码转换成中间代码连接器把中间代码和其他代码合并,生成可执行文件
img
img
C 语言概述

章节概要:C 语言程序简单示例、#include与头文件、主函数main、注释、花括号、声明与变量、赋值、printf函数、return语句、C 语言程序基础结构、多条声明、打印多个值、多个函数、关键字和保留标识符

简单的 C 程序示例及分析
代码语言:javascript
复制
#include <stdio.h>

int main(void)                //一个简单的C程序
{
    int num;                  //定义一个名为num的变量
    num = 1;                  //为num赋一个值
    printf("I am a simple "); //使用printf函数
    printf("computer.\n");
    printf("my favourite number is %d because it is fitst.\n", num);
    return 0;
}
进一步使用 C
代码语言:javascript
复制
//把2英寻转换成英尺
#include <stdio.h>

int main(void)
{
    int feet, fathoms;
    fathoms = 2;
    feet = 6 * fathoms;
    printf("There are %d feet in %d fathoms!\n", feet, fathoms);
    printf("Yes,I said %d feet!\n", 6 * fathoms);
    return 0;
}
  • 程序分析及知识概要
    • 多条声明 1、int feet, fathoms;语句,使用多条声明声明了两个变量,使用逗号,隔开,此语句与int feet;+int fathoms;等价
    • 打印多个值 1、程序的第一个printf()进行了两次替换按顺序feetfathoms替换了两个%d 2、第二个printf()说明待打印的值不一定是变量,只要可求值得出合适类型值的项即可
多个函数
  • 自己的函数添加到程序中,此处只做简单了解,后续学习:
代码语言:javascript
复制
#include <stdio.h>

void def(void)
{
    printf("hello world!");
}

int main(void)
{
    def();
    return 0;
}
关键字和保留标识符
  • 下表中粗体表示C90标准新增关键字,斜体表示C99标准新增关键字,粗斜体 表示C11标准新增关键字
img
img
数据和 C

章节概要:交互式程序、变量与常量数据、数据、数据类型关键字、C 语言基本数据类型、进制打印显示(int 类型中)、可移植类型、使用程序获得数据类型大小

示例程序(交互式程序引入)
代码语言:javascript
复制
#include <stdio.h>

int main(void)
{
    float weight;
    float value;
    printf("Please enter your weight in pounds:");
    scanf("%f", &weight);
    value = 1700.0 * weight * 14.5833;
    printf("your weight in platinum is worth $%.2f.\n", value);
    return 0;
}
  • 新元素简单分析
    • 新的变量声明,使用float浮点数类型,浮点类型可以储存带小数的数字,详细说明见本章后面部分
    • 为了打印新类型的变量(浮点数),printf处使用%f处理浮点值
    • %.2f用于精确控制输出,指定保留小数后两位
    • scanf()函数用于读取键盘的输入%f说明scanf()读取输入浮点数&weight告诉scanf()把输入的值赋给名为weight变量
    • scanf()函数使用&符号表明找到weight变量的地点,下章将详细讨论,目前请按照这样写
变量与常量数据
  • 变量:有些数据类型在程序运行期间可能会改变被赋值,这些称为变量
  • 常量:有些数据类型在程序使用之前已经预先设定好了,整个程序运行过程中没有变化,称为常量
数据
  • 位、字节、字 位、字节、字是描述计算机数据单元存储单元的术语,这里主要指储存单元 (bit):最小的储存单元。可以储存0 或 1,是计算机内存的基本构成块 字节(byte):常用的计算机存储单位,字节集合,一个字节可以储存8 位。这是字节的标准定义,至少在衡量存储单位时是这样 (word):是设计计算机时给定的自然存储单位,对于 8 位的微型计算机,一个字长只有 8 位。从那以后,个人计算机字节增至 16 位、32 位,直至目前的 64 位。计算机的字长越大数据转移越快,允许的内存访问也更多
  • 整数
    • 和数学概念一样,整数是没有小数部分的数,例如 2、-23、2456 都是整数
    • 计算机以二进制数字存储整数,如整数 7 二进制写为 111,因此要在8 位字节中存储该数字,需要前 5 位设置为0后 3 位设置为1
img
img
  • 浮点数
    • 与数学中实数概念差不多,例如 2.75、3.16E7、7.00、2e-8 都是浮点数
    • 注意,在一个值后面加上小数点,该值就成为一个浮点数,所以7 是整数7.00 是浮点数
    • 此处简要介绍e 计数法(科学计数法):3.16E7表示3.16 * 10^7
    • 这里关键要理解浮点数整数储存方案不同,计算机把浮点数分成小数部分指数部分表示,而且分开存储这两部分7.0写成0.7E1,这里,0.7 是小数部分1 是指数部分。计算机在内部使用二进制2 的幂进行储存,后续探讨(此处图例以十进制下理解为例)
img
img
数据类型关键字
img
img
C 语言基本数据类型
获取类型大小
  • 可以使用sizeof()获取以字节为单位的类型大小C99C11提供%zd匹配sizeof()返回值,其余不支持的编译器可用%u%lu代替
代码语言:javascript
复制
#include <stdio.h>

int main(void)
{
    printf("Type int has a size of %zd bytes.\n", sizeof(int));
    printf("Type char has a size of %zd bytes.\n", sizeof(char));
    printf("Type float has a size of %zd bytes.\n", sizeof(float));
    return 0;
}
字符串和格式化输入输出

章节概要:字符串简介、char 类型数组与 null 字符、strlen()函数、常量与 C 预处理器、明示常量、printf()函数

示例程序
代码语言:javascript
复制
#include <stdio.h>
#include <string.h>

#define DENSITY 62.4 // 定义人体密度

int main(void)
{
    float weight, volume;
    int size, letters;
    char name[40];
    printf("Hi! What's your first name?\n");
    scanf("%s", name);
    printf("%s,whats's your weight in pounds?\n", name);
    scanf("%f", &weight);
    size = sizeof(name);
    letters = strlen(name);
    volume = weight / DENSITY;
    printf("well, %s, your volume is %2.2f cubic feet\n", name, volume);
    printf("Also, your first name has %d letters,\n", letters);
    printf("and we have %d bytes to store it.\n", size);
    return 0;
}
  • 新元素简单分析
    • 数组储存字符串。在该程序中,用户输入的名被储存在数组中,该数组占用内存中40 个连续的字节,每个字节储存一个字符值
    • 使用%s转换说明处理字符串的输入和输出。注意,在scanf中,name没有&前缀,而weight有(稍后解释,&weightname都是地址)
    • 用 C预处理器字符常量DENSITY定义为 62.4
    • 用 C 函数strlen()获取字符串的长度
字符串简介
  • 字符串一个或多个字符序列,如"I came from America"
  • 双引号"不是字符串的一部分,仅是告知编译器括起来的是字符串,就如单引号'用于标识单个字符一样
char 类型数组与 null 字符
  • C 语言没有专门用于存储字符串的变量类型,字符都被储存在char类型数组中。数组连续的存储单元组成,字符串的字符被储存在相邻的存储单元中,每个单元储存一个字符
  • 数组末尾位置有一个空字符(\0),C 语言用空字符(null)标记字符串结束。这意味着数组容量必须比存储字符数多 1
  • 数组同类型数据元素有序序列方括号[]表示这是一个数组
  • 使用%s来转换打印一个字符串
  • 字符串字符char不是同一种类型,因为字符串最后有空字符标识,而char只存储该字符
  • 使用strlen()函数可以得到字符串的字符长度,且strlen()不会计入空字符
常量与 C 预处理器
  • 为什么要使用常量

使用常量名比数字表达的信息更多,如area = PI * d与area = 3.14 * d相比更加直观

对于程序中多次使用同一个常量时,如果常量的值需要修改,只需要修改常量值即可

  • 如何创建符号常量

可以定义变量,将其值定义为所需的值,但这样程序可能会无意间改变它的值

  • 使用

C 预处理器

定义,格式为

代码语言:javascript
复制
#define 常量名 值

编译程序时,所有的常量名都会被替换为它们的值

定义常量时,习惯上建议全用大写,以此告知他人这是一个常量,提高程序可读性;此外也有小众习惯使用c_变量名k_变量名表示常量

注意:define常量名后的内容用于替换符号常量,不要将#define NUM 20写成#define NUM = 20,这样定义的WORD值为=20而非20

C90标准新增限定词const,表示只读,也可用此作为常量使用(其只表明只读变量),如const float PI=3.14

  • 明示常量

C 头文件

代码语言:javascript
复制
limits.h

代码语言:javascript
复制
float.h

分别提供与整数与浮点数类型大小限制相关的说明,如

代码语言:javascript
复制
limits.h

中有类似以下代码:

代码语言:javascript
复制
#define INT_MAX +32767
#define INT_MIN -32768
  • 这些明示常量代表int类型可表示的最大值和最小值,该头文件会为这些明示常量提供不同的值,如果系统使用32 位的 int且程序包含limits.h头文件,则可以使用printf()%d转换输出该常量 32 位 int 的值
  • 如果系统使用4 字节的 int,该头文件将提供符合 4 字节的对应值
  • 下为limits.h中的一些明示常量:

相似的,float.h头文件下也有一些明示常量:

  • 相似的,float.h头文件下也有一些明示常量:
代码语言:javascript
复制
limits.h

代码语言:javascript
复制
float.h

分别提供与整数与浮点数类型大小限制相关的说明,如

代码语言:javascript
复制
limits.h

中有类似以下代码:

代码语言:javascript
复制
#define INT_MAX +32767
#define INT_MIN -32768
  • 这些明示常量代表int类型可表示的最大值和最小值,该头文件会为这些明示常量提供不同的值,如果系统使用32 位的 int且程序包含limits.h头文件,则可以使用printf()%d转换输出该常量 32 位 int 的值
  • 如果系统使用4 字节的 int,该头文件将提供符合 4 字节的对应值
  • 下为limits.h中的一些明示常量:[外链图片转存中…(img-JqEyomEq-1653357330355)]
  • 相似的,float.h头文件下也有一些明示常量:
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 用一句Halle认识C 语言
  • ✨博主介绍
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档