C语言
文章平均质量分 71
迪大学院
信仰于心
展开
-
二十三.函数的调用约定
函数的调用约定结合逆向反汇编讲解__cdecl1.__cdecl 右到左压栈 然后调用方平衡栈2.这种一般是C/C++语言的默认的调用约定3.由于是调用方平栈那么会导致一个问题就是,不同的编译器产生栈的方式不尽相同,那么调用者能否正常的完成清除工作呢?答案是不能。4.同时如果是调用方平衡栈那么会导致以产生的可执行文件大小会比调用_stdcall函数的大__stdcall1.__stdcall 主要用于调用Win32 API函数 右到左压栈 然后函数内部平衡栈 ret 8__fastcal原创 2022-01-31 12:15:17 · 163 阅读 · 0 评论 -
二十二.递归函数和函数指针
递归函数和函数指针递归函数通俗点讲就是自己调用自己但是可不是无限哦int TotalNum(int a){ printf("a=%d\n", a); if (a <= 1) { return 1; } return a * TotalNum(a-1);//注意这里如果是--a 或者a--会影响结果}int main(){ int sum = TotalNum(5);//5!5的阶乘 printf("sum=%d\n", sum);}注意:1.递归必须有一原创 2022-01-31 12:13:22 · 740 阅读 · 0 评论 -
二十一.函数的参数几种使用
函数的参数几种使用指针参数 普通参数 引用参数 缺省参数 可变参数区别普通参数1.也就是我们平常见到的一些最简单的int ADD(int a,int b){ return a+b;}//int a,int b 这种类型 + 变量 指针参数1.参数类型包含了指针int ADD(int *a,int *b){ return *a+*b;}引用参数1.参数类型包含了引用int ADD(int &a,int &b){ return a+b;原创 2022-01-31 12:11:50 · 273 阅读 · 0 评论 -
二十.引用类型
引用类型什么是引用1.可以理解成给一个已有的变量名,取一个别名格式1.类型名 &引用名 = 同类型的某变量名;2.此时的 “&”就不是之前我们讲到的取地址的意思了,而是引用一个变量的意思案例11.先看如下代码int iNum=0;int &iPhoneNum=iNum;2.发现我们的变量名iNum被iPhoneNum给引用了3.什么意思呢?4.也就是此时iPhoneNum和iNum 都指的是同一个内存地址,也就相当于iPhoneNum是变量名iNum的另外一原创 2022-01-31 12:09:10 · 282 阅读 · 0 评论 -
十九.指针的本质和使用
指针的本质和使用一、地址概念我们首先来看看地址 是个什么概念每一个变量都有一个内存位置,每一个内存位置都定义了可使用 & 运算符访问的地址,它表示了在内存中的一个地址。画图简单说明:二、 什么是指针?指针也就是内存地址,指针变量是用来存放内存地址的变量。就像其他变量或常量一样,您必须在使用指针存储其他变量地址之前,对其进行声明。int a=3;int *pa=&a;画图简单说明:指向一个变量2.1 指针变量声明的一般形式指针类型 *变量名关键 " * " 符原创 2022-01-31 12:07:55 · 1116 阅读 · 0 评论 -
十八.局部 全局 局部静态 静态全局变量
局部 全局 局部静态 静态全局变量在前面的课中 我们讲了常量和变量这里我们讲下变量的作用域 和 局部变量 全局变量 全局静态变量 局部静态变量在讲到这些之前 还需要了解下程序的内存分配问题一、程序的内存分配一个由C/C++编译的程序占用的内存分为以下几个部分:1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回原创 2022-01-31 12:01:56 · 234 阅读 · 0 评论 -
十七.函数的基本写法
函数的基本写法一.函数的介绍1.1什么是函数及其函数的作用函数是一组一起执行一个任务的语句.每个 C 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数.您可以把代码划分到不同的函数中,如何划分代码到不同的函数中是由您来决定的,但在逻辑上,划分通常是根据每个函数执行一个特定的任务来进行的.而我们等会要将到得函数声明是告诉编译器函数的名称、返回类型和参数等信息。而函数定义提供了函数的实际主体.1.2 库函数C 标准库提供了大量的程序可以调用的内置函数.例原创 2022-01-31 11:58:14 · 2513 阅读 · 0 评论 -
十六.跳转语句和Switch
跳转语句一、break continue在讲到上面的循环后,有没有同学会有疑问.如何提前结束当前循环或者只执行循环体的某个部分代码下面我们讲讲如何操作5.1 breakbreak:中文解释“休息 打断”意思一般在循环体内配合if条件判断来实现当达到某个条件就跳出循环int a=10;while(a>0){ printf("a=%d\n"); a--; if(a==5)//当a==5的时候 就 { break; }}syst原创 2022-01-31 11:56:31 · 216 阅读 · 0 评论 -
十五.循环语句
循环语句一、while1.1 whilewhile 中文解释有一个 "在…期间"的意思也就是说当满足某个条件 一直处于某个期间我们首先来看看一段代码1.2 例如int a=10;while(a>0){ printf("a=%d\n"); a--;}system("pause");1.首先看到定义了一个int类型的变量a, 同时赋值为10.2.这时候进入循环语句while,判断a是否大于0.当瞒住这个条件.3.进入循环语句块并执行相应的代码块,也就是{}里面原创 2022-01-31 11:54:30 · 479 阅读 · 0 评论 -
十四.if判断语句
15.if判断语句一、if else 及其嵌套首先我们从最简单的if开始讲1.1 ifif翻译成中文就是 :如果顾名思义就是用来判断某个条件是否为真 还是假如果为真就执行我们制定的代码块如果不为真就执行另外一块代码块注意{}一定要限制住代码块的范围!!好了 这里用代码说明 具体的用法int a=1;int b=2;if(a<b){ printf("结果:a<b \n");}1.2 流程图二、if…elseint a=1;int b=2;if(a<原创 2022-01-31 11:51:19 · 3286 阅读 · 0 评论 -
十三.作用域
14.作用域1.首先我们从名字“作用域”就能联想到,有一个“域”字 ,应该是什么区域之类的东西.2.好,我们继续.3.确实没错,C语言里面的作用域就是用来限制某些变量、代码块、以及一些函数等等的起作用的范围.4.那么一旦脱离这个范围就会失效,也就是C语言我们叫做回收/释放.书写规范1.首先我们作用域大多说情况是以{}左右个一个“花括号”,把我们的某些变量、代码块、以及一些函数等等限制在这个区域.局部作用域-举例说明11.在我们第一节课就遇到了main函数,紧接着就是{},在花括号中就是我们的原创 2022-01-31 11:46:50 · 176 阅读 · 0 评论 -
十二.运算符
一、运算符1.首先我们来看看C语言有哪几种运算符,先了解下2.算数运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 其他运算符(sizeof 三目运算符)3.这些运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。4.是不是想迫切的知道这些运算符怎么使用呢?5.下面我们先介绍算数运算符 关系运算符 逻辑运算符 ,其他运算符我们后面的章节再讲二、算数运算符+ - * / % ++ –2.1.+ 加号int i1 = 1;int i2 = 2;int i3 = i1 + i2;pri原创 2022-01-31 11:43:56 · 315 阅读 · 0 评论 -
十一.类型转换
一、强制转换类型1.从名字上来理解关键在于类型转换中“转换“二字的理解2.想必大家也能理解 其实就是 一种类型转换为另一种类型3.类型转换分为: 显示转换 和 隐示转换4.区别在于 显示需要再变量名前加(需要转换的类型名) 而隐示转换是不需要加的 会自动根据定义的类型自动转换5.虽然说是自动转换 但是也要做注意 可不是任何类型都可以任意转换的哦二、强制转换注意事项1.转换的类型 和 被转换的类型 的数据宽度2.数据类型三、显示转换3.1 有符号和无符号在数据宽度 基本类型相同的转换vo原创 2022-01-22 13:05:17 · 667 阅读 · 0 评论 -
十.变量和常量
变量引言相信大家在上一节课的代码中看到过很多 变量的定义和声明int a=1;bool b=TRUE;char c=‘h’;float f=1.0f;double d=2.0f;等等 这些代码不明白这是干什么的 其实这就是在申请一个变量那么今天我们就讲解一下变量和常量好了 开始我们今天的讲解变量首先讲解变量,这个变量从字面意思 在于一个"变" 字,怎么变呢?也就是我们可以通过赋值改变变量的值。例如:int a=88888;float b=99.0f’;对,没错这a b就是变原创 2022-01-18 19:09:02 · 248 阅读 · 0 评论 -
九.有符号和无符号
一原码 补码 反码计算的二进制数据有3种表现形式分别为:原码 补码 反码.首先我们看到原码是可以理解的,例如:以1个字节计算,10的原码是:0000 1010那为什么会有补码和反码的存在呢?这是由于CPU的关系,等会我们再细致讲解.我们的计算机在内存中其实存放二进制数据的形式是补码.之前的课程中我们讲到的例子全是正数没有用到过负数.其实计算机的类型会分为有符号类型(正/负号)和无符号类型(正号没有负号),一般我们的正号是可以省略的.它们均可以在类型名前加"unsigned"关键字表示为无符号,原创 2022-01-11 09:14:33 · 1720 阅读 · 2 评论 -
八.数据类型
一 数据宽度首先在了解数据类型之前 我们要了解数据宽度任何的数据类型都是有宽度的,宽度就是表示这种数据类型的数据占多大的空间。数据宽度的两个基本单位是字节和位。这里的位说的是二进制,一位就是一位二进制(只能用0或者1 来表示)位是计算机最小的储存单位 。一字节等于8位,等于两位16进制,字节是我们应用的最小单位。这里有同学可能会问到?为什么等于2位十六进制那是因为比如:8个二进制1 组成1字节 1111 1111 每4个二进制位最大表示的数为 也就是说4个二进制位表示的范围可以在0到1原创 2022-01-11 09:07:12 · 123 阅读 · 0 评论 -
七.进制的演变和转换
01来源于生活1.上面一章讲到了语言的源来2.这里我们讲下计算机识别的 0 和1的故事3.0和1代表2种不同的可能性,这种可能可以表达不同的2种情况:(是 否) (正确 错误)(开 关) 等等4.也就是一个二进制位可以代表2种可能性,这里的二进制位表示的就是0或者1,在计算机我们称为bit位也就是最小单元5.我们设想下生活中遇见的可能性可不止2种可能,如果是的话那岂不是人人都中彩票500万~!6.显然可不止2种可能性(各占50%)那么简单,实际上是经过排列组合而成的非常非常多的可能性(怎么理原创 2022-01-09 11:30:34 · 954 阅读 · 0 评论 -
六.printf和scanf_s
printf基本用法1.printf() 是 C 语言标准库函数,用于将格式化后的字符串输出到标准输出。标准输出,即标准输出文件,对应终端的屏幕。printf() 申明于头文件 stdio.h。int printf ( const char * format, ... );现在我们看看他的参数:首先第一个参数:是一个字符串 也就是 “” 双引号里面的 最终会被格式化输出在控制台上 显示出来的那么这里肯定有同学会问 格式化? 到底是什么意思?简单的来说就是 把某个数据 按照一定的 格式 转为原创 2022-01-09 11:19:30 · 954 阅读 · 0 评论 -
五.C语言基础语法
{} 花括号1.主要用于确定代码块的范围(比如:函数体)2.定义变量的作用域(比如:当变量离开了本属于他的作用域就会失效)()括号1.函数的定义格式的组成部分 ( 比如:void main() 先了解后面会讲到)2.调用函数(比如: main() 就表示要调用main函数了);分号1.用于语句 表达式的结尾(比如: int a=0; c+a+b;)//注释1.用于注释,不参与编译,只能注释一行/* */ 注释1.同理也是注释,不参数编译,可以注释一大段多行注释,逗号1.逗原创 2022-01-09 11:13:27 · 423 阅读 · 0 评论 -
四.初步了解第一个Hello world C项目
初步了解C项目原创 2021-12-28 17:11:57 · 418 阅读 · 0 评论 -
三.编译器的安装和简单的项目创建
编译器的安装和简单的项目创建1.这一章节就是简单的编译器VS的安装和项目的创建编译器的安装1.可以在官网下载Visual Studio 2022 IDE - 适用于软件开发人员的编程工具2.也可以下载安装我提供的3.版本最好不要太高了vs2017 vs2015 是最好的开始安装1.打开预先下载好的安装包2.我们会看到有2个版本的安装程序,vs_Community是社区版(免费版本) vs_Professional是专业版(收费版本),看到了下面的激活秘钥文本文件,那么我...原创 2021-12-22 08:53:54 · 962 阅读 · 0 评论 -
二.01的故事
01来源于生活1.上面一章讲到了语言的源来2.这里我们讲下计算机识别的 0 和1的故事3.0和1代表2种不同的可能性,这种可能可以表达不同的2种情况:(是 否) (正确 错误)(开 关) 等等4.也就是一个二进制位可以代表2种可能性,这里的二进制位表示的就是0或者1,在计算机我们称为bit位也就是最小单元5.我们设想下生活中遇见的可能性可不止2种可能,如果是的话那岂不是人人都中彩票500万~!6.显然可不止2种可能性(各占50%)那么简单,实际上是经过排列组合而成的非常非常多的可能性(怎么理原创 2021-12-21 09:29:39 · 121 阅读 · 0 评论 -
一.语言的起源
介绍了下语言的进化原创 2021-12-20 10:28:31 · 3253 阅读 · 0 评论