首页 > 其他分享 >C语言学习笔记(持续更新)

C语言学习笔记(持续更新)

时间:2024-11-26 20:32:21浏览次数:8  
标签:字符 函数 内存 数据类型 更新 C语言 笔记 常量

C语言

计算机的组成(预备知识)

计算机组成

  • 计算机:能进行计算和逻辑的设备

  • 硬件:组成计算机的各种物理部件(鼠标,键盘)【硬件=电子设备+单片机编程+集成电路+嵌入式系统】

  • 软件:计算机中运行的程序和数据【软件=系统软件+应用软件+编程语言+算法和数据结构】

    计算机的六大部件

    • 中央处理器(CPU)
    • 内存
    • 输入设备
    • 输出设备
    • 外存储器
    • 网路

    计算机的工作原理

    • 存储程序
    • 程序控制

    计算机语言

    • 机器语言:二进制0和1构成
    • 汇编语言:充当翻译
    • 高级语言:C/C++,JAVA,Pytnon,PHP,C#

    C语言的简史与特点

    嵌入式开发就是针对Linux系统的开发,而Linux系统使用C语言开发的,所以从事嵌入式开发要使用C语言

C语言程序的开发过程

	* 编辑:程序员向.c文件写入程序
	* 编译:将源文件(.c)编译成可执行程序(二进制)
	* 运行:运行可执行程序

在这里插入图片描述

C语言程序的编译过程
  • 预处理
  • 编译
  • 汇编
  • 链接

在这里插入图片描述

一个简单的C语言程序

功能:要求在控制台上输出“hello world”

代码:

/*************************************************************************
> File Name: demo01.c
> Author: 冯鹏飞
> Description: C语言程序的基本结构
> Created Time: 2024年11月25日 星期一 10时51分25秒
************************************************************************/
// 引入系统库(系统的标准输入输出库,如:scanf(),printf())
#include <stdio.h>
// 入口函数:每一个.c文件有且仅有一个入口函数
// C语言中入口函数的返回值和参数列表比较灵活,唯一的要求:函数名必须是main
int main(int argc,char *argv[])
{
// 向控制台输出hello world!
printf("hello world!\n");// 一行代码执行结束,使用“;”表示结束
return 0;
}

程序结构分析:

  • 注释:代码中起到解释说明的文字(提高代码的可读性),或对代码进行屏蔽,不会被执行
  • 预处理命令:程序中包含的某一文件内容
  • 主函数:C程序的如口函数,一个C文件有且仅有一个主函数(main函数)
  • 函数头/函数说明:说明函数类型,函数名和函数参数,举例:int main()
  • 函数体:包括变量说明和语句执行部分
  • 函数调用语句:比如格式输出函数,举例:printf()
C语言书写格式

C语言在编码的时候,需要遵循如下规范:

* 常用缩进书写格式(一般缩进2~4个字符)
* 有足够的注释(添加必要的注释,使代码更好理解)
* 有合适的空行(一般预处理命令和函数,全局变量和函数,函数和函数之间)使代码结构更清晰
* {}对齐并独占一行
* 函数体内采用分层缩进和模块化的书写方式
* 不把多条语句写在程序的同一行上
* 命名:变量或者函数命名要尽量包含更多含义,但不能太长
C语言程序的设计特点
  • C程序有一个或多个函数组成,但有且仅有一个主函数(main函数);main函数是程序执行的入口,可至于任意位置
  • 程序中可以有预处理命令(#include)预处理命令通常在程序最前边
  • 每个语句以分号结尾;预处理命令,函数头,和{}之后不加分号
  • 函数体由一对{}括起来
  • 包含在/…/内文本为注释
  • 一行内可以写几个语句,一个语句也可以写多行
  • 程序区分大小写字母。一般变量,语句用小写;符号变量,宏名用大写
  • 标识符和保留字之间必须加空格分割
C语言中的注释

​ 在C语言中,注释分为单行和多行注释

 ##### 单行注释

用//双斜杠表示,用于常量,变量,函数调用等的定义

多行注释

使用/*…*****/表示,它可以占用多行代码但不能嵌套,一般用于函数文件头说明

注意:由多行注释衍生出一种更为细致的注释称之为文档注释

数据类型

定义

数据类型其实使固定大小内存的别名,并且描述了一个变量存放什么类型的数据。简单来说,就是组织和草主数据。

数据:计算机要处理的的数据(数字,字符串,文字,符号,图片,音频,视频等)

  • 数据类型不仅帮助我们组织和操作数据,还决定了程序如何有效地利用内存
  • 了解数据类型的内存需求是理解计算机管理和操作数据的关键
注意:简单来讲,程序的运行需要用到内存
内存存储单位
  • 比特(btye):计算机存储容量的一种单位,一般应用层最小存储单元的表示
  • 比特位(bit):计算机是以二进制数的方式进行存储的,应用层可以通过位运算进行位的操作
1个字节(byte)=8位(bit)
数据类型分类和计算方法

在这里插入图片描述

数据类型在内存中的大小
序号数据类型中文说明大小(字节)
1short短整形2
2int基本整形4
3long(long int)长整型4(32位编译器)/8(64位编译器)
4long long(long long int)长长整型8
5float单精度浮点型4
6double双精度浮点型8
7char字符型1
8bool布尔型,真–true,假–false1
注意:因为C语言没有byte这个单位,所以我们一般使用char来表示字节,因为1个char==1个byte
     获取某个数据类型或者变量所占的字节数-->sizeof(某个数据类型或者变量名)
总结:①直接联系在内存中所占的字节数跟C语言的编译系统有关
 	 ②计算某个数据类型所占的字节数可以用sizeof
 	 ③布尔类型要添加#include <stdbool.h>,大家也可以使用int类型的0表示假,非0表示真

常量与变量

在C语言重,数剧的基本表现形式是常量和变量。不管是常量还是变量,都是需要在内存开辟一块空间,用于数据的存放

常量

定义:在程序执行过程中其值不能改变的量

分类:int,float,char和符号常量

  • 整型常量(int):

​ ①整型常量可用十进制,八进制,十六进制三种形式表示。

​ ②整型常量中的长整型数据可用L最为后缀

  • 整型常量的分类

​ ①有符号和无符号基本整型常量(-128~127)

​ ②有符号和无符号长整型常量

​ ③有符号和无符号长整型常量

浮点型常量

C语言中的浮点数就是平常所说的常数,有两种表现形式:

①十进制小数形式:0.123,-17.8

②指数形式:123.0=1.23E3

注意:
	①在符号E前必须要有数字
	②在符号E的后面必须为数字
	③实型常量后缀用F/f表示,双精度型用L/l表示
字符常量

用单引号’ ‘括起来的字符。

转义字符常量 :以反斜杠’\‘开头的字符序列,表示控制及不可见的字符,如:

序号字符形式含义ASCII码
1\n换行10
2\r回车13
3\0空字符0
4\t水平制表9
字符串常量

说明:在C语言中是支持字符串常量的,但不支持字符串变量,字符串变量需要使用字符数组或者字符指针实现

  • 用一对双括号“ ”括起来的字符序列
  • 可以输出一个字符序列
注意:字符串常量“a”与字符常量’a‘区别
	系统自动为字符串常量加上结尾的"\0”,使所占内存单元多一个,单字符常量的长度不变,可用sizeof()运算符来测量。

在这里插入图片描述

1h duiahs中文字符= 2英文字符,中文字符在内存中的实际占用空间=2个数据字节+空位字节(\0)=3个字节。

符号常量

定义一个标识符来代表一个常量

好处:

  • 增加可读性
  • 增强可维护性

定义符号常量:

  • 用编译预处理命令(#define宏定义)

    #define 标识符 字符串
    
  • 标识符和字符串之间用空格隔开

  • 句末不用分号
    片转存中…(img-jMtV8rAL-1732527858527)]

1h duiahs中文字符= 2英文字符,中文字符在内存中的实际占用空间=2个数据字节+空位字节(\0)=3个字节。

符号常量

定义一个标识符来代表一个常量

好处:

  • 增加可读性
  • 增强可维护性

定义符号常量:

  • 用编译预处理命令(#define宏定义)

    #define 标识符 字符串
    
  • 标识符和字符串之间用空格隔开

  • 句末不用分号

  • 标识符的命名用大写,若有多个单词,则用下划线_分隔

标签:字符,函数,内存,数据类型,更新,C语言,笔记,常量
From: https://blog.csdn.net/expectsl/article/details/144033185

相关文章

  • C语言(数据,运算符)
    C语言学习笔记2——数据,运算符变量概念在程序执行过程中其中的值可以被改变的量变量代表内存中具有特定属性的一个存储单元,他是用来存储数据的,也就是存变量的值变量应有个名字,以便于通过名字访问变量举例:#include<stdio.h>intmain(){ //①声明变量并初始化 i......
  • 学习分享-队列-2(数据结构C语言)
    本章通过C++代码使用STL(标准模板库)中的queue类实现了栈的基本操作,包括入队、出队、查看队头元素、判断队列是否为空以及清空队列。导入头文件#include<iostream>#include<queue>//引入队列的头文件usingnamespacestd;创建队列queue<int>q;入队操作q.push(10)......
  • app搭建笔记(18)
    一、app自动化测试环境和用途:主要用于做app端UI自动化,熟悉adb命令(a表示安卓,d表示debug,b表示桥)adb是连接手机设备二、搭建环境的工具(1)jdk已安装,java的一种编译器(本地windows安装)jdk安装和配置环境变量(2)查看jdk版本如果如果配置好,就要配置环境变量a、JAVA_HOME......
  • 《程序员修炼之道:从小工到专家》读书笔记(四)
    第三章:基本工具《程序员修炼之道:从小工到专家》第三章是该书中非常关键的一章,它的核心主题围绕编程中的基本工具展开,强调了工具对于程序员的重要性,如同工匠需要趁手的工具一样,程序员也需熟练掌握一系列基本工具来提高开发效率、保证代码质量以及更好地应对项目中的各种挑战。首......
  • 金融管理综合应用笔记
    PART1考试情况介绍1.考试时间:3小时2.考试形式:满分100分,60分及格3.考试题型:一个案例,包括两个大题,每题50分(全是主观题★★*)4.考试时间:2013.11.16.14:30-17:305.知识点的考核目标:A.解决问题能力:40%B.决策能力:40%C.人际交往能力:10%D.数据处理能力:10%(实际要求要比这......
  • SAP B1 系统-主窗口和定制工具的笔记
    文章目录前言一、SAPB1主窗口1.菜单栏2.工具栏3.主菜单4.状态栏5.上下文菜单6.搜索引擎二、SAPB1定制工具1.用户自定义的字段举例1:在物料主数据添加自定义字段“收货提前期”,字段头衔为“U_DeliveryLeadTime”,字段类型为“数字”2.用户自定义的值举例1:将销售订单的......
  • Prometheus从二进制部署迁移Docker中更新到v3.0.0版本
    一Prometheus的迁移1.备份数据找到二进制安装的目录mkdir-p~/prometheus_backupcp-r/usr/local/prometheus~/prometheus_backup/创建挂载目录mkdir-p~/docker/prometheus/datamkdir-p~/docker/prometheus/config2.复制配置文件cp~/prometheus_backup......
  • office 操作技巧笔记
    Excel1、批量调整时间格式需求:把 yyyy-MM-ddHH:mm:ss格式的时间批量调整成 yyyy/MM/dd格式 选中要调整的全部数据,菜单栏进入“数据”-“分列”-“智能分列” 向导步骤一直接下一步 向导步骤二选中第一列,设置为日期,选中第二列,选择“忽略此列”,点击完成即可 2、......
  • ChatGPT国内中文版镜像网站整理合集(2024/11/27更新)
    一、GPT中文镜像站①yixiaai.com  支持GPT4、4o以及o1,支持MJ绘画 AIChat什么是镜像站镜像站(MirrorSite)是指通过复制原始网站内容和结构,创建的备用网站。其主要目的是在原始网站无法访问时,提供相同或类似的服务和信息。ChatGPT镜像站的用途绕过访问限制:在某些地区......
  • WPF笔记6——静态资源(StaticResource) 与 动态资源(DynamicResource)
    示例代码1前台代码:点击查看代码<Windowx:Class="TestWPF.Window1"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://sc......