首页 > 其他分享 >C Prinmer Plus笔记第1-6章

C Prinmer Plus笔记第1-6章

时间:2024-07-21 19:59:51浏览次数:17  
标签:语句 long int 浮点数 笔记 运算符 Plus Prinmer 类型

文章目录

C Prinmer Plus笔记

超简洁版 大一学过了现在大三上课被老师dissC语言基础不扎实
再加上看了大佬们写的游戏开发面试题 决定重新从头学一遍C语言

第1章 初始C语言

高效、可移植、强大而灵活、面向程序员
使用C语言的7个步骤:
1.定义程序的目标
2.设计程序
3.编写代码
4.编译
5.运行程序
6.测试和调试程序
7.维护和修改程序
链接器的作用:把编写的目标代码、系统的标准启动代码和库代码合并成一个文件,即可执行文件

第2章 C语言概述

组成C程序的几个部分
#include——预处理指令
int main()——main()总是第1个被调用的函数——语句——组成函数的语句
function a()——函数是C程序的构造块——语句
function b()——语句
C语言中的六种语句:标号、复合、表达式、选择、迭代、跳转语句
其中语句中包含:关键字、标识符、运算符、数据
ISO C关键字
auto extern short while break float signed _Alignas
case for sizeof _Alignof char goto static _Atomic
const if struct _Bool continue inline switch _Complex
default int typedef _Generic do long union _Imaginary
double register unsigned _Noretrun else restrict void _Static_assert
enum return volatile _Thread_local1

第3章 数据和C

char 字母和其他字符 也可以表示较小的整数
float\double\long double 表示带小数点的数 _Bool表示布尔值 _Complex和_Imaginary表示复数和虚数
计算机的储存方式分为两大基本类型:整数类型和浮点数类型

位、字节和字
最小的存储单元是位(bit),可以储存0或1
字节(byte)是常用的计算机存储单位 1字节为8位
字(word)是设计计算机时给定的自然存储单位 计算机的字长越大,其数据转移越快,允许的内存访问也更多 目前64位

3.16E7表示3.16乘以10的7次方
7是整数 7.00是浮点数 浮点数和整数存储方案不同 计算机把浮点数分成小数部分和指数部分来表示,分开存储
实际区别:整数没有小数部分,浮点数有小数部分;浮点数可以表示的范围比整数大;对于一些算术运算,浮点数损失的精度更多;因为在任何区间内都存在无穷多个实数,所以计算机的浮点数不能表示区间内所有的值。浮点数通常只是实际值的近似值;浮点数运算慢

0x或0X前缀表示十六进制值 0前缀表示八进制 16、0x10、020
以十进制显示数字使用%d;以八进制显示数字用%o;以十六进制显示数字使用%x
另外要显示各进制数的前缀必须分别使用%#o、%#x、%#X

char是整数类型 ASCII码的范围是0~127 占一个字节

转义序列含义
\a警报(ANSI C)
\b退格
\f换页
\n换行
\r回车
\t水平制表符
\v垂直制表符
\| 反斜杠(\)
\’单引号
\“双引号
\?问号
\0oo八进制
\xxh十六进制
转义序列和单个字符赋值给字符变量是要用单引号括起来

复数和虚数类型
C语言中有3种复数类型:float_Complex、double_Complex和long double_Complex
C语言中有3种叙述类型:float_Imaginary、double_Imaginary和long double _Imaginary
如果包含头文件complex.h,便可以用complex代替_Complex

传递给函数的信息被称为参数
程序员要负责确保转换说明的数量、类型与后面参数的数量、类型相匹配

第4章 字符串和格式化输入/输出

4.1

#include<string.h> //提供strlen()函数的原型 获取字符串长度
size=sizeof name; //获取char name[40]多大此处为40bytes
使用%s转换处理字符串的输入输出

4.2.1

数组末尾位置的字符\0 是空字符 用来标志字符串的结束
空字符不是数字0 是非打印字符 其ASCII码值是0
C中的字符串一定以空字符结束 这意味着数组的容量必须至少比待储存字符串的字符数多1
什么是数组?
数组是同类型数据元素的有序序列

4.2.3

sizeof运算符 它以字节为单位给出对象的大小 计空字符
strlen()函数给出字符串中的字符长度 不计空字符

4.3常量和C预处理器

#define NAME value
用大写表示符号常量是C语言一贯的传统 名称前带c_或k_前缀表示常量
%1.2f表明结果被四舍五入位两位小数输出
const关键字用于限定一个变量为只读
C头文件limits.h and float.h分别提供了与整数类型和浮点数类型大小限制相关的详细信息p79明示常量表

4.4printf()和scanf()

%a %A 浮点数、十六进制数和p记数法
%c 单个字符
%d 有符号十进制整数
%e %E 浮点数,e记数法
%f 浮点数,十进制记数法
%g %G 根据值的不同,自动选择%f或%e %e格式用于指数小于-4或者大于或等于精度时
%i 有符号十进制整数(与%d相同)
%o 无符号八进制数
%p 指针
%s 字符串
%u 无符号十进制数
%x %X无符号十六进制数,使用十六进制数0f 0F
%% 打印一个百分号
printf()的修饰符详见p83

第5章 运算符、表达式和语句

用于存储值的数据存储区域统称为数据对象
sizeof(以字节为单位返回运算对象的大小)返回size_t类型的值 这是一个无符号整数类型 但它不是新类型
typedef机制 允许程序员为现有类型创建别名
求模运算符:% 递增运算符:++ 递减运算符:–
优先级:递增递减运算符都有很高的结合优先级,只有圆括号比它们优先级高
如果一个变量出现在一个函数的多个参数中,不要对该变量使用递增或递减运算符;
如果一个变量多次出现在一个表达式中,不要对该变量使用递增或递减运算符
表达式运算符运算对象组成
语句是C程序的基本构建块
副作用是对数据对象或文件的修改
序列点是程序执行的点,在该点上,所有的副作用都在进入下一步之前发生 语句中的分号标记了一个序列点
完整表达式(full expression)是指这个表达式不是另一个更大表达式的子表达式
复合语句(compound statement)是用花括号括起来的一条或多条语句,符合语句也成为块(block)
基本的类型转换规则
1.当类型转换出现在表达式时,无论是unsigned还是signed的char和short都会被自动转换成int,如果有必要转换成unsigned int 由于都是由较小类型转换为较大类型,所以这些转换被称为 升级(promotion)
2.涉及两种类型的运算,两个值会被分别转换成两种类型的更高级别
3.类型的级别从高至低依次是long double、double、float、unsigned long long、long long、unsigned long、long、unsigned int、int。例外的情况是当long和int的大小相同时,unsigned int比long级别高。之所以short和char类型没有列出,是因为它们已经被升级到int或unsigned int
4.在赋值表达式语句中,计算的最终结果会被转换成被赋值变量的类型。这个过程可能导致类型升级或降级。所谓降级,是指把一种类型转换成更低级别的类型
5.当作为函数参数传递时,char和short被转换成int,float被转换成double

强制类型转换(cast),即在某个量的前面放置用圆括号括起来的类型名,该类型名即是希望转换成的目标类型。
强制类型转换运算符(cast operator):圆括号和它括起来的类型名

形参:声明参数
实参:函数调用传递的值
形参是变量,实参是函数调用提供的值,实参被赋值给相应的形参
变量名是私有的
原型(prototype)即是函数的声明,描述了函数的返回值和参数。

第6章 C控制语句:循环

while语句
while(expression)
statement
fabs()函数 可以方便的比较浮点数 该函数返回一个浮点数的绝对值 在math.h头文件中
优先级:赋值运算<关系运算符<算数运算符
不确定循环(indefinite loop):预先不知道会循环多少次 如用户输入
计数循环(counting loop):执行循环之前就定义好会循环多少次
for语句
for(initialize;test;update)
statement
在test为假之前重复执行statement部分
入口条件循环(entry condition loop):while循环、for循环 在每次迭代之前检测测试条件 所以有可能根本不执行循环体中的内容
出口条件循环(exit condition loop):do while 循环 每次迭代之后检查测试条件 保证了至少执行循环体中的内容一次
do while语句
do
statement
while(expression);
嵌套循环(nested loop):在一个循环内包含另一个循环
数组(array):按顺序存储的一系列类型相同的值
用于识别数组元素的数字被称为下标(subscript)、索引(indice)、或偏移量(offset)
幂函数pow()

标签:语句,long,int,浮点数,笔记,运算符,Plus,Prinmer,类型
From: https://blog.csdn.net/weixin_42964413/article/details/140455705

相关文章

  • 《算法笔记》总结No.10——链表
        从第10期破例插叙一期单链表的实现,这个东东相当重要!考研的同学也可以看:相较于王道考研的伪码不太相同,专注于可以运行。如果是笔试中的伪码,意思正确即可~ 注:博主之前写过一个版本的顺序表和单链表的C++实现,和这篇的写法有所不同,不过内容也较全,大家可以先行阅读~......
  • 谷粒商城实战笔记-43-前端基础-Vue-使用Vue脚手架进行模块化开发
    文章目录一,Vue的模块化开发1,目录结构2,单文件组件(SFC)3,模块化路由4,Vuex模块5,动态组件和异步组件6,抽象和复用7,构建和打包8,测试9,文档和注释10,持续集成/持续部署(CI/CD)二,实战1,全局安装webpack2,全局安装vue脚手架3,初始化vue项目4,启动vue项目三,Vue应用原理初探1,m......
  • jdk相关学习笔记
    1、jdk、jre和jvm:jdk-java开发工具:javadevelopmentkitjre-java运行环境:JavaRuntimeEnvironmentjvm-java虚拟机:JAVAVirtualMachine三者关系如下:2、电脑C盘中programfiles和programfiles(X86)分表代表啥意思:在Windows操作系统中,C:\ProgramFiles和C:\ProgramF......
  • 网络流学习笔记
    今天重温了网络流,感觉收获颇丰网络流其实可以抽象成流水问题,有\(n\)个点\(m\)条边,每条边有最大容量,有一个出水的源点\(S\)和进水的汇点\(T\),问你最后汇点的水最多能有多少。增广路:从\(S\)到\(T\)的一条路径中流的值都大于零的一条路就叫增广路讲解法之前先介绍一下建反边的操......
  • CSA笔记4-包/源管理命令以及本地光盘仓库搭建
    包/源管理命令1.rpm是最基础的rmp包的安装命令,需要提前下载相关安装包和依赖包2.yum/dnf是基于rpm包的自动安装命令,可以自动在仓库中匹配安装软件和依赖包注意:以上是安装命令,以下是安装源3.光盘源:是指安装系统时后的操作系统光盘,它里面有很多自带的常用软件安装包,定位于当......
  • 设计模式之观察者模式(学习笔记)
    定义观察者模式是一种行为型设计模式,它定义了一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会收到通知并自动更新。这种模式用于实现对象之间的解耦,使得一个对象的变化可以通知并更新多个依赖对象,而无需直接引用它们。为什么使用观察者模式?解耦观......
  • 圆方树学习笔记 & 最短路 题解
    前言圆方树学习笔记,从一道例题讲起。题目链接:Hydro&bzoj。题意简述仙人掌上求两点距离。题目分析为了把仙人掌的性质发挥出来,考虑将其变成一棵树。圆方树就是这样转换的工具。先讲讲圆方树的概念:原图上的点为圆点,每个点双对应一个方点,树边都是方点连向点双内的圆点。具......
  • 概率与计算 ----学习笔记
    概率与计算(定理、推论集合)Chapter\(I\)概率论公理定义\(1.1\) 概率空间三要素  \(1.\)样本空间\(\Omega\),限制在概率空间上的随机过程所以可能结果的集合  \(2.\)表示可容许事件的族集\(\mathcal{F}\),其中\(\mathcal{F}\)中的每个集合都是样本空间\(\Omeg......
  • Java 随笔记: 集合与泛型
    文章目录1.集合框架概述2.集合接口2.1Collection接口2.2List接口2.3Set接口2.4Map接口3.集合的常用操作3.1添加元素3.2删除元素3.3遍历元素3.4判断大小3.5判断是否为空4.迭代器4.1迭代器的作用4.2迭代器的使用4.3迭代器与增强for循环4.4迭代器......
  • MCCM论文阅读笔记
    ImprovingNewsRecommendationwithChannel-WiseDynamicRepresentationsandContrastiveUserModeling论文阅读笔记Abstract存在的问题:​ 现有方法大多使用CNN和Self-Attention等深度学习模型从新闻标题和摘要中提取文本特征,生成特定的新闻向量。然而,基于CNN的方法......