C语言
文章平均质量分 72
C语言学习笔记
我还是学习吧
这个作者很懒,什么都没留下…
展开
-
C语言——程序的编译
程序的翻译环境和执行环境在ANSI C的任何一种实现中,存在两个不同的环境。翻译环境:在这个环境中源代码被转换为可执行的机器指令。执行环境:用于执行代码的环境。翻译环境执行环境程序必须载入内存。在有操作系统的环境中,程序载入内存的操作一般有操作系统完成。在独立的环境中(单片机等),程序的载入由手工完成,将可执行代码植入只读内存程序执行开始。调用main函数。开始执行程序代码。这时程序将使用一个运行时堆栈(stack),储存函数的局部变量和返回地址。程序同时也可以使用静态(st原创 2021-10-02 11:14:49 · 280 阅读 · 13 评论 -
C语言——文件操作
一、流对于不同的I/O设备,通常具有不同的特性和操作协议,操作系统负责这些不同设备的通信细节,并向程序员提供一个更为简单和统一的I/O接口。ANSI C进一步对I/O的概念进行了抽象。就C程序而言,所有的I/O操作只是简单地从程序移进或移出字节,这种字节流就被称为流(stream)。流分为两种类型:文本(text)流和二进制(binary)流。文本流与文本文件文本流中的字节以ASCII码值的形式写入到文件或设备中,适用于文本数据。与文本流相关联的文件就是文本文件。二进制流和二进制文件二进制流中原创 2021-10-02 09:52:12 · 346 阅读 · 7 评论 -
C语言——动态内存分配
malloccallocrelallocfree柔性数组内存泄漏原创 2021-09-26 14:45:41 · 455 阅读 · 1 评论 -
C语言——一个基于冒牌排序可以排序多种数据类型的排序函数
#include<stdio.h>//注意,使用size_t这种类型之前要先调用stdio.h#include<string.h>//用到strcmp//每次调用这个排序函数,要自己针对比较的数据类型实现一个数据大小比较的函数//int型数据的大小比较函数int cmp_int(const void* e1, const void* e2){ return *(int*)e1 - *(int*)e2;}//测试结构体数据,通过调试观察struct Stu{ c原创 2021-09-22 22:49:56 · 111 阅读 · 0 评论 -
C语言——自定义类型(结构体、枚举、联合)
前言C语言里自定义类型有3种,分别是结构体,枚举,联合结构体结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。结构体的声明结构体的声明形式如下struct tag//tag是标签名{ member-list;//大括号里面是结构体成员}variable-list;//大括号后面分号前是变量列表,可以在这里定义变量。注意最后的分号不能少示例struct Book{ char name[30]; double price; char author原创 2021-09-19 16:20:58 · 513 阅读 · 0 评论 -
C语言——字符串函数、内存函数笔记
整理常用的处理字符和字符串的库函数以及内存函数的用法、注意事项及部分模拟实现strlen此函数接收一个char*类型参数,返回字符串\0前字符数,注意返回类型是size_t型的//关于strlen返回值的一个易错点int main(){ const char* str1 = "abcdef"; const char* str2 = "bbb"; if (strlen(str2) - strlen(str1) > 0) { printf("str2>str1\n"); .原创 2021-09-15 20:42:34 · 213 阅读 · 0 评论 -
C语言——指针练习题
本题关键是画图理清指针的指向,以及自加改变了哪些内容#include<stdio.h>int main(){ char* c[] = { "ENTER","NEW","POINT","FIRST" }; char** cp[] = { c + 3,c + 2,c + 1,c }; char*** cpp = cp; printf("%s\n", **++cpp); printf("%s\n", *-- * ++cpp + 3); printf("%s\n", *cpp[-2.原创 2021-09-08 20:53:40 · 164 阅读 · 0 评论 -
C语言——指针笔记
前言本文着重关注数组名与指针的相同点和区别原创 2021-09-04 17:41:38 · 337 阅读 · 7 评论 -
C语言——如何深刻理解C语言数组名、sizeof、strlen
由于指针的访问可以通过*和[]实现,以及在不同条件下数组名代表的意义不同,加上对于sizeof、strlen的用法理解不够透彻,初学者在使用的时候容易错误使用指针,并且难以发现错误。本文将结合大量例子,讲解数组名、指针加减整数后指向位置、sizeof和strlen的用法。...原创 2021-09-04 13:16:56 · 279 阅读 · 6 评论 -
C语言——数据的储存
文章目录前言整形在内存的储存为什么存在原码、反码、补码例题例一例二例三例四例五浮点型在内存的存储例题前言本文用具体例子讲解数据的储存,数据溢出,整型提升,算术转换整形和浮点型在内存中的存储整形在内存的储存为什么存在原码、反码、补码例题例一#include<stdio.h>int main(){ char a=128; char b=-128; printf("%u\n",a); printf("%u\n",b); printf("%d\n",a); print原创 2021-08-10 22:13:17 · 158 阅读 · 6 评论 -
C语言——操作符笔记
前言本文是对操作符笔记,包含左值右值、左右结合性、优先级的内容原创 2021-08-08 19:51:56 · 190 阅读 · 2 评论 -
C语言实现杨辉三角——非等腰及等腰
前言本文整理了几种打印杨辉三角的方法,包括非等腰形式打印和等腰形式打印主要思路杨辉三角的打印的解决分为两步把数据储存到数组按格式打印如何生成数据杨辉三角的数据应该用数组储存,可以用二维数组储存,如下各个元素利用递推公式arr[i][j]=arr[i-1][j]+arr[i-1][j-1]生成这里需要注意的地方是数组使用前必须初始化(上图中空白的三角的数据是0)i-1,j-1可能导致数组越界,解决方案是先把第一列全部赋值为1再用递推公式(有的方法会把第一列和对角线都先赋原创 2021-08-07 14:51:01 · 201 阅读 · 0 评论 -
C语言——函数栈帧的创建和销毁
前言本文从内存层面上主要讲解函数的以下几个问题局部变量是怎样创建的为什么局部变量的值是随机值函数是怎样传参的,传参的顺序是怎样的形参和实参之间是什么关系函数调用是怎么做的函数调用结果如何返回本文也有助于理解程序是如何被计算机执行的但是本文写的很乱,待博主理解得更清晰后会再次整理预备知识寄存器:esp(栈顶指针,指向函数栈帧的顶部)和ebp(栈底指针,指向函数栈帧的底部)用于维护函数栈帧。压栈(push):从栈顶压一个字节,esp向低地址移动一位。出栈(pop):从栈顶删除一原创 2021-08-06 18:46:27 · 411 阅读 · 10 评论 -
C语言——输入输出之printf()和scanf()的使用
前言printf()和scanf()是学习C语言常用的IO函数,本文总结了printf()和scanf()的一些使用规则以及如何查看整数类型和浮点类型大小限制的方法printf()转换说明转换说明指定了如何把数据转换成可显示的形式转换说明输出%a浮点数、十六进制数、和p计数法(C99/C11)%A浮点数、十六进制数、和p计数法(C99/C11)%c单个字符%d有符号十进制整数%e浮点数,e计数法%E浮点数,e计数法%f浮点数原创 2021-07-30 17:11:34 · 1690 阅读 · 0 评论 -
C语言——作用域、链接属性、储存类型笔记
前言本文整理了作用域,链接属性,储存类型几个概念,包含关键字externa,static,register的用法。作用域(scope)概念:当变量在程序的某个部分声明时,它只有在程序的一定区域内才能被访问。这个区域由标识符的的作用域决定。——《C和指针》P39编译器可以确定4种不同类型的作用域文件作用域函数作用域代码块作用域原型作用域...原创 2021-07-30 11:23:10 · 329 阅读 · 0 评论 -
不创建第三个临时变量交换两个数-C语言
代码如下#include<stdio.h>int main(){ int a = 10; int b = 20; a = a ^ b; b = a ^ b; a = a ^ b; printf("%d\n", a); printf("%d\n", b); return 0;}理解方法:异或操作符^的效果是,两个整形异或,他们的二进制对于位相同位0相异为1于是我们可以把异或的结果理解为密码本,0代表相同,1代表相异,先暂时存在a里,那么当a再与b异或,那么得到的原创 2021-07-30 09:13:43 · 70 阅读 · 0 评论 -
C语言——函数递归
前言本文总结了c语言中函数的基础知识原创 2021-07-26 15:31:32 · 1510 阅读 · 4 评论 -
Typora基本使用
文章目录前言1.标题2.字体3.引用4.分割线5.图片插入6.超链接7.列表8.表格9.插入文章目录前言markdown是一种轻量级标记语言,可以方便的插入图表、图片、超链接、数学公式,写博客、记笔记时都会用到。本文总结了markdown的一些常用基本语法(本文仅是博主学习过程的总结,如有错误,希望大家指出)1.标题一级标题:#+空格+标题名二级标题:##+空格+标题名以此类推,几个#就是几级标题,最多有6级标题……2.字体加粗:**+需要加粗的文字+**给文本添加背景色(黄色):原创 2021-07-25 23:36:34 · 294 阅读 · 1 评论 -
电脑常用快捷键
graph LRABC-->STOP*[HTML]: 超文本标记语言一个具有注脚的文本。[^1][^1]:注脚的解释原创 2021-07-25 14:01:24 · 97 阅读 · 0 评论