
C语言学习笔记
王星雨
这个作者很懒,什么都没留下…
展开
-
9.1结构体基础
9.1 结构体基础9.1 结构体基础一、结构体概念与意义二、结构体使用(一) 结构体定义(二) 赋值与初始化(三) 结构体成员访问(四) 结构体变量的运算三、结构体变量所占字节长度四、结构体变量和结构体变量指针作为函数参数传递的问题一、结构体概念与意义意义为了表达复杂的事物,而普通类型的变量无法满足实际需要。比如表达学生信息,一个学生信息包含名字、性别年龄等多项信息,定义多维数组太复杂了。概念把一些基本类型数据组合在一起,形成的一个新的复合数据类型,这个叫做原创 2020-08-06 18:48:52 · 419 阅读 · 0 评论 -
8.6动态内存分配
8.6 动态内存分配8.6 动态内存分配一、传统数组的缺点二、为什么需要动态内存分配三、动态内存分配举例——动态数组的构造(一) malloc 函数(二) 利用 malloc 函数动态构造一维数组四、静态分配内存和动态内存分配比较(一) 静态内存(二) 动态内存五、跨函数使用内存的问题(一) 静态变量不能跨函数使用详解(二) 动态内存可以跨函数使用一、传统数组的缺点数组长度必须事先指定,且只能是常整数,不能是变量传统形式定义的数组,该数组的内存原创 2020-08-06 17:59:52 · 337 阅读 · 0 评论 -
7.1函数变量
7.1 变量7.1 变量一、变量的分类按作用域分(一) 局部变量:(二) 全局变量:按变量的存储方式分——从变量的存在时间(生存期)角度静态存储(一) 静态局部变量 static(二) 静态外部变量(三) 外部变量(即非静态的外部变量)扩展外部变量的定义域动态存储(一) 自动变量 auto —— 动态局部变量(二) 寄存器变量 register二、变量的作用域、可见性、存在性、生存期(一)作用域&可见性(二)存在性&原创 2020-07-19 23:21:56 · 1091 阅读 · 0 评论 -
8.2指针和数组
8.2 指针和数组8.2 指针和数组一、指针和一维数组的关系1. 数组名2. 确定一个一维数组需要几个参数?3. 下标和指针的关系4. 指针变量的运算4. 一个指针变量所占字节二、指针和二维数组的关系一、指针和一维数组的关系1. 数组名int a[5];// a 是数组名,5是数组元素的个数,从a[0]-a[4];int b[3][4];//3行4列,a[0][0]是第一个元素,a[i][j]是第i+1行,第j+1列的数int c[5]={1};//其余元素原创 2020-07-19 23:14:46 · 376 阅读 · 0 评论 -
8.1指针用法初识
8.1 指针用法初识8.1 指针用法初识一、指针是什么(一) 含义(二) 通过一个简单程序来认识指针深层理解 p = &i;指针与指针变量二、指针的重要性三、指针的定义与分类概况(一) 基本类型指针初识基本类型指针的常见错误读写修改未分配权限空间的值野指针基本类型指针案例——互换两个数字1. 不用函数2. 不用指针的函数能否实现数字互换呢?3. 用指针写函数互换两个变量的值附注(二) 指针和数组(三) 指针和函数原创 2020-07-17 23:07:41 · 623 阅读 · 0 评论 -
6.4数组作为函数参数
数组作为函数参数数组作为函数参数一、数组元素作为函数参数二、一维数组名作为函数参数三、多维数组名作为函数参数一、数组元素作为函数参数数组元素可以作为函数实参,但不可以作为函数形参。实参可以是常量、变量或表达式,数组元素的作用相当于一个变量,所以可以作为实参。数组元素不能作为形参的原因:因为形参的作用是,在函数被调用时,临时分配存储空间的,数组的存储是一段连续的存储空间,不能为其中某一个数组元素单独分配一块存储空间,所以数组元素不能作为形参。数组元素作为函数实参,是把实参的原创 2020-07-13 19:37:44 · 2269 阅读 · 0 评论 -
6.3函数的嵌套与递归
6.3 函数的嵌套与递归6.3 函数的嵌套与递归递归一、递归的含义二、递归的例题求 n!阶乘问题递归-汉诺塔问题函数可以嵌套调用,但不可以嵌套定义递归一、递归的含义在调用一个函数的过程中又出现直接或间接调用该函数本身,称为函数的递归调用需要有一个条件控制递归次数,不能无终止的自身调用。二、递归的例题求 n!阶乘问题# include <stdio.h># include <math.h>int JieCheng(int n)原创 2020-07-13 19:35:54 · 510 阅读 · 0 评论 -
6.2函数的调用and声明and函数原型
6.2 函数的调用&声明&函数原型6.2 函数的调用&声明&函数原型一、函数调用的一般形式&调用方式函数调用方式二、函数调用时的数据传递函数形参&实参实参和形参之间的数据传递函数调用的过程函数的返回值三、对被调函数的声明和函数原型一、函数调用的一般形式&调用方式一般形式:函数名(实参表列)函数调用方式按照函数调用在程序中出现的函数调用语句函数调用作为一个语句,可以不返回参数;printf_原创 2020-07-05 22:11:06 · 416 阅读 · 0 评论 -
6.1函数的定义和作用
6.1 函数的定义和作用6.1 函数的定义和作用引言:为什么需要函数一、什么是函数 & 函数的作用C程序的构成其他函数的分类从用户使用的角度看从函数的形式来看从返回值来看其他不严谨说法二、函数的定义引言:为什么需要函数避免了重复性操作有利于程序的模块化一、什么是函数 & 函数的作用逻辑上:能够完成特定功能的独立的代码块物理上:能够接收数据,能够对接受的数据进行处理,能够将数据处理的结果返回总结: 函数是一个工具,它是为原创 2020-07-05 22:09:25 · 8218 阅读 · 1 评论 -
5.3字符数组&字符串
5.3 字符数组&字符串说明:本部分涉及到指针的一部分内容,后续补充5.3 字符数组&字符串字符数组与字符串的概念字符数组的定义与初始化完全初始化不完全初始化其他特殊的字符数组初始化方式(字符串)字符数组的引用字符数组的输入输出格式声明字符串字符串的定义初始化字符串处理函数1. puts——输出字符串函数2. gets——输入字符串函数3. strcat——字符串连接函数4. strcpy和strncapy——字符串复制函数5. s原创 2020-06-30 10:30:50 · 234 阅读 · 0 评论 -
5.2二维数组
5.2 二维数组5.2 二维数组一、二维数组的定义二、二维数组在内存中的存储方式(详细见指针的部分介绍)三、二维数组的初始化完全初始化不完全初始化四、二维数组的引用通过指针引用多维数组(见指针部分)普通引用五、二维数组的操作输出二维数组求二维数组最大的元素返回下标求二维数组的鞍点(该行最大、该列最小)判断矩阵是否对称六、是否存在真正的多维数组一、二维数组的定义类型说明符 数组名 [常量表达式(行)][常量表达式(列)]a[2][3] 代表一原创 2020-06-22 18:27:12 · 639 阅读 · 0 评论 -
5.1一维数组
5.1一维数组5.1一维数组引言一、一维数组的定义二、一维数组的初始化完全初始化不完全初始化不初始化清零初始化的几种错误写法三、一维数组的引用四、一维数组的特点五、一维数组的操作排序冒泡排序选择排序添加&删除&查找&倒置引言为什么需要数组???为例解决大量同类型数据的存储和使用的问题。可以模拟现实世界一、一维数组的定义定义:类型说明符 数组名[常量表达式]例子: int a[100] ; floa原创 2020-06-22 16:29:49 · 520 阅读 · 0 评论 -
4.2循环
C流程控制——循环C流程控制——循环一、定义二、分类(一)for 循环1. 执行顺序2. 循环程序举例(二)while 循环1. 执行顺序2. 与 for 的相互比较3. while 程序举例4. for 与 while 的适宜情况(三)do …… while 循环三、break & continuebreakcontinue1. 作用2. 例子一、定义重复执行二、分类for 循环while 循环do whil原创 2020-06-12 10:52:21 · 587 阅读 · 0 评论 -
4.1流程控制概述
4.1 流程控制概述&选择一、什么是流程控制流程控制是程序代码执行的顺序二、流程控制的分类1. 顺序2. 选择 有选择地执行某些代码 分类 if语句 1. if 最简单地用法 2. if 的范围问题 3. if……else 4. if……elseif……else、 5. C语言对真假的处理 6. 程序举例——求分数的原创 2020-06-10 14:17:45 · 253 阅读 · 0 评论 -
3.4数据的输入输出
3.4 数据的输入输出一、输入输出的相关概念所谓输入输出是以计算机为主机而言的。C语言本身不提供输入输出语句,输入和输出操作是由C标准函数库中的函数来实现的。printf函数 和 scanf函数 不是 C语言提供的输入输出语句,也不是 C语言的关键字, 而只是 库函数的名字,函数声明在 stdio.h 这个库里面。为什么不提供输入输出语句呢? 答曰:为了使编译阶段不涉及计算机硬件操作,从而使编译系统简化,通用性强,可移植性好。各种C编译系统提供的系统函数库是各软件公司编制的。如果源程序中有原创 2020-06-08 11:27:51 · 417 阅读 · 0 评论 -
3.2运算符与表达式
3.2 运算符与表达式一、运算符(见运算符专题) 1、先考虑优先级,优先级相同时,考虑结合方向 2、记住算术运算符的结合方向都是自左向右,赋值运算符的结合方向是自右向左。二、不同类型数据间的混合运算如果一个算术运算符两边的数据类型不一致,则会先自动进行类型转换,使二者成为相同的数据类型,再进行运算。整型、实型、字符型数据之间可以进行运算。2.1 自动类型转换自动类型转换优先级示意图:数据类型低等级向高等级转换同级横向转换double最高等级float转dou原创 2020-06-01 12:56:29 · 236 阅读 · 0 评论 -
专题、浮点数的存储及取值范围
浮点数的存储及表达范围参考资料:1. 浮点数进制转换, Mr.Rico个人博客2. 浮点存储和取值范围,优快云 treasurew 博客3.【学习记录】正数乘以正数等于负数?| 整数和浮点数在计算机中的存储,B站Up 笨手笨脚oO一、存储符号位指数位有效数字位表达这个数字的正负,二进制1表示负,0表示正存放规范化指数形式的指数位存放有效数字32位二进制(4个字节)符号位指数位有效数字位1bit8bit23bit64位二进制(8字原创 2020-05-30 13:26:47 · 2643 阅读 · 0 评论 -
利用VS code markdown 创建一个C语言运算符表格
效果: 优先级 运算符 含义 使用 运算对象的个数 结合方向 1 () 圆括号 (表达式) or 函数名(形参表) 自左至右 [ ] 下标运算符 数组名[常量表达式] -> 指向结构体成员运算符 对象指针->成员原创 2020-05-28 21:10:17 · 366 阅读 · 0 评论 -
C语言学习笔记之动态内存分配&&结构体——辣鸡版学生管理系统
@【C语言学习笔记】小辣鸡自学C语言中,好多视频教程都有这个案例,小辣鸡自己边学边记,下边是代码。 如有错误,感谢告知!!!#include<stdio.h>#include<stdlib.h>struct Student * StuList;int len;int i;void InputStudent(struct Student *,int );//声明时可以不写形参名字,只写参数类型即可void OutputStudent(struct Student原创 2020-05-24 14:45:24 · 327 阅读 · 0 评论