自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 收藏
  • 关注

原创 第九章 指针(一)

因为知道mypoint里保存的是整型变量i的地址,而又知道整型变量占4字节,这表示1000这个地址开始的4字节(1000-1003)里面是个整型数据,那从1000开始取得4字节数据,也就是5,就是i的值,这就是”间接访问"一一通过特殊变量mypoint,间接访问了变量i的值。那么,也可以定义一种特殊的变量,这种特殊变量专门用来保存地址。假设定义了一个变量mypoint来存放整型变量的地址,请注意,虽然这种特殊变量是用来保存地址的,但它也分保存什么类型变量的地址,这里mypoint是用来保存整型变量地址的。

2024-06-03 17:27:43 852

原创 第八章 编译预处理(二)

一般情况下,在生成可执行文件的过程中,源程序文件中的所有代码行都参加编译,但有时候希望对其中的一部分内容只在满足定的条件下才进行编译,也就是对一部分内容指定编译的条件也有的时候,希望当满足某条件时对组语句进行编译而当件不满足时编译另外一组语句,这都叫条件编译。""的含义是首先在当前目录查找要包含的文件,如果找不到,再到系统目录中查找、所以""常用于自己写的一些想被其他文件#include的文件,让系统优先到当前目录中寻找所要包含的文件(因为自己写的这些被包含文件往往会放到当前目录)

2024-05-24 17:45:18 834

原创 第八章 编译预处理(一)

如果"被替换的内容"中有"宏名"后列出的形参,如a、b则将程序代码中相应的实参(可以是常量、变量或者表达式)代替形参,如果"被替换的内容"的项并不是"宏名"后列出的形参,则保留,如上面a*b中的“*”就会被保留。",显然代码变多了,所以使用宏的次数如果增多,源程序代码就会增多,但函数调用不会使源程序代码增多。本节先要讲解“宏定义”。作用:用右边的"被替换的内容"代替宏名(参数表)",但具体怎样替换,后面会详细讲,和不带参数的宏定义相比,这里多了个参数表,在被替换的内容中,一般都会包含参数表中所指定的参数。

2024-05-23 16:12:21 754

原创 第七章 函数(六)

内部函数又称为静态函数,使用内部函数,可以使函数只局限于其定义所在的源程序文件中,所以不同源程序文件中的同名函数彼此不受干扰,试想,如果分工不同的两个人编写两个不同的.cpp源程序文件,如果他们所写的函数同名,则在编译链接时会报错,如果用static修饰这些函数,那么即使所起的函数名相同,也互相不受影响(因为这些函数被限制在当前定义所在的源文件中).另外,使用这种跨文件的全局变量要很小心,因为在某个源程序文件的某个函数中改变了这些全局变量的值,也会影响到其他源程序文件中使用该全局变量值的函数。

2024-05-20 17:16:51 1001

原创 第七章 函数(五)

既然作用范围不同,那么,上面的代码中,在main函数和fun2函数中可以使用全部 a,b,c1,c2四个全局变量 ,而在fun1函数中只能使用全局变a和b,不能使用全局变量c1和c2(因为c1、c2 定义在fun1 函数的下面,总体来说一个函数中,既可以使用本函数中定义的局部变量,也可使用有效的全局变量。做一个“外部变量说明”,表示该变量在函数的外部定义,这样在函数内就能使用,否则编译就会出错,但有点要注意全局变量在定义的时候是可以给初值的,但是在做外部变量说明时,是不可以给变量初值的。

2024-01-25 18:01:15 770

原创 第七章 函数(四)

可以用多维数组名作为形参和实参,形参数组在定义时,可以指定每一维的大小,也可以省略第一维的大小,但不能省略第二维的大小。值得强调的是:将数组名作为函数参数时,就不是”值传递"的概念了,不再是单向传递,而是把实参数组的开始地址(背地址)传递给了形参,这就相当于实参和形参指向(代表)了同一段内存单元,这其实叫地址传递,也就是说形参数组中各个元素的值,如果发生了改变,就等价于实参数组元素的值发生了相应的改变,这一点是与普通变量作为函数参数明显不同的地方。

2024-01-09 16:14:39 356

原创 第七章 函数(三)

有的编译环境可能会出现报错,崩溃,异常退出等,根本原因是系统的资源(内存)耗尽了,这是因为不断无限次地调用函数自身所导致,调用函数是要占内存的,每多调用一次函数,系统的内存就要多占用一些,当函数调用完成,从函数中返回时,调用这个函数时所占用的内存才能被系统释放掉。(3)第 3 次调用jiiecheng 函数会执行 result=jiecheng(3-1)*3,第3次调用处所在代码行的信息被暂存,然后进入jiecheng(2)。(2)2 的阶乘知道了 ,就能够求出 3 的阶乘,也就是 2 的阶乘* 3。

2024-01-05 17:52:06 836

原创 第七章 函数(二)

问题:如果函数太多,A函数要词用B函数,必须把B函数写在A函数上面,C 函数要调用 D 函数 ,必须把 D 函数写在 C 函数上面,就好像必须把 printHello 函数写在 main 函数上面一样 ,一会就晕了,不知道究竟哪个函数该写在哪个函数上面。注意:若调用的是没有形参的函数,实参列表可以没有,但圆指号不能省略。虽然不能嵌套定义函数 ,但 C 语言允许嵌套调用函数,也就是说 ,在调用一个函数过程中,被调用的函数又去调用第三个函数,甚至第三个函数又去调用第四个函数......都是被允许的。

2023-12-27 13:55:49 1220

原创 第七章 函数(一)

函数代表一段可以复用的代码 ,其存在的意义和价值在于可以大最减少编程中重复 码出现的数量,只需要把这些重复的代码段写成函数,每个函数用于实现一个相对独立和短小的功能,当需要对应功能的时候,可以直接通过调用这些函数来实现,此外,还可以通过给函数传递不同的参数来控制函数的各种执行行为。所以,函数的使用非常灵活、方便。(4)函数不能嵌套 ,不能在一个函数内部套另外一个函数,函数之间能够互相调用,但不要调用 main 函数,否则会产生意想不到的问题,比如执行代码时产生异常,main 函数是留给系统来调动的。

2023-12-22 18:33:11 948

原创 第六章 数组(三)

实际上,C语言对字符串常量也会自动在其末尾增加一个 '\0'作为字符串结束标记,例如 "I love you"一共有10 个可见字符(空格也算可见字符) ,每个可见字符占 1字节内存,但实际上这个字符串在内存中是占 11 字节,最后1字节存放的是 '\0',这个 '\0'是由系统自动加上去的。如c[0] ='\0'。(1)对于字符串(双引号包含起来),系统会自动往末尾增加一个'\0',也可以自己手动在末尾增加'\0',字符数组并不要求它最后一个字符为'\0',甚至整个字符数组可以没有'\0'。

2023-12-22 15:39:09 738

原创 第六章 数组(二)

可以把二维数组看成是一种特殊的一维数组,a[3][4]这个二维数组,可以把 a看成是一个一维数组,这个一维数组有三个元素,即a[0]、a[1]、a[2],每个元素又是一个包含 4 个元素的一维数据。引用二维数组元素时必须带两个中括号 ,如 a[2][3],下标也可以整型表达式,如 a[5-3][4-1],但一般不会这样写,一般都是写成一个整数,注意不要写成 a[2,3],必须是两个中括号。每个大括号里的内容代表一行,这里省略了第三行 ,没给第三行元素赋初值,那么所有没有赋值的元素,都会被系统默认赋成0。

2023-12-21 09:57:18 919

原创 第六章 数组(一)

(4)a[10]中的数字10 表示 a 数组中有 10 个元素,下标从0开始,这 10个元素是 a[0],a[1],a[2]......a[9]。(6)定义数组时提到的常量表达式,可以是一个数字如 10,也可以是常量表达式如 2+8,但不能包含变量,也就是说 C 语言不允许对数组的大小做动态定义,数组大小不能依赖于程序运行过程中变量的值,换一种理解方式数组定义的时候,数组大小就已经固定了。(3)所谓一维数组,也就是带一对中括号[ ],以后还会学带两对中括号[ ][ ]的数组,叫二维数组,后面再讲。

2023-12-19 15:47:57 892

原创 第五章 循环控制(三)

(1)break 语句不能用于循环语句和 switch语句之外的任何其他语句中,并且 break语句出现在 switch 中时,含义是跳出 switch 语句,而不是跳出循环体,即使在 switch 语句外面有一个循环语句,也仅仅用于跳出 switch语句而不是跳出 switch外面的循环语句。例:输出一个九九乘法表,形式如:1*1=1,2*1=2,2*2=4,3*1=3,3*2=6,3*3=9,...,9*9=81。break语句用于跳出循环体,也就是提前结束循环,接着执行循环后面的语句。

2023-12-14 17:39:30 330

原创 第五章 循环控制(二)

(3)若表达式 2 的值为真(非 0),则执行 for 语句中指定的内嵌语句 ,同时求解表达式 3,反复循环步骤 2,直到表达式 2的值为假,若表达式 2 的值为假 (0) ,则循环结束 ,跳到整个 for 语句后面的语句去执行。(2)表达式 2 可以省略, 也就是不判断循环结束条件,但分号依旧不能省略,那么循环就会无终止地进行下去,此时,就必须用 break语句终止for循环,break语句后面会讲到。(4)可以省略表达式 1 、表达式 3,只写表达式 2,要注意该保留的分号必须要保留。

2023-12-13 15:19:32 373

原创 第五章 循环控制(一)

直到型循环结构的最大特点是先执行 一次循环体语句,然后判断表达式的值,如果表达式的值为真(非 0)时 ,继续执行循 环体语句 ,然后继续判断表达式的值,如此反复。还有,将来学习函数时,还要知道一点,goto语句不能跨函数使用。当型循环结构的最大特点是先判断表达式的值,如果表达式的值为真(非0),就执行循环体语句,如此反复。goto 是一个有争议的语句,有人说 goto 语句的使用会使程序的可读性变差,所以要限制使用 ,但作为程序开发人员,如果有使用的必要 ,能够简化程序流程、提高工作效率,那就用。

2023-12-13 11:18:33 822

原创 第四章 逻辑运算和判断选择(三)

swirch后面表达式的值若满足(等于)任何某个 case后面的常量表达式值,则执行case后面的 1行或多行语句 ,直到遇到 break语句停止,然后跳出整个switch语句并继续 switch后面语句的执行,如果所有 case条件都不满足,则会执行default 中包含的1行或多行语句 ,然后跳出整个 switch 语句。也有人习惯用{}把要执行的语句括起来,这也完全可以。a:b条件表达式是这样执行的:如果(a>b)的条件为真,则取a的值作为整个表达式的值,否则取b的值作为整个表达式的值。

2023-12-12 14:32:55 794

原创 第四章 逻辑运算和判断选择(二)

这个逻辑表达式中,根据 && 全真出真,有假出假的规则,得到一个结论:只有 a 为真(非 0)才需要判断 b,只有 a 和 b 都为真才需要判断 c,只要 a 为假,就不必判断 b,如果 a 为真 b 为假,就不需要判断 c。这个逻辑表达式中 ,根据 || 有真出真,全假出假的规则,得到一个结论 : 只要 a 为真,就不必判断 b 和 c,只有 a 为假时 ,才需要判断 b,只有 a 和 b 都为假,才需要判断 c。(1)不要把 && 写成 &,也不要把 || 写成 |,否则,得到的逻辑运算结果是不对的。

2023-12-12 11:46:40 893

原创 第四章 逻辑运算和判断选择(一)

在 C 语言编程中,总少不了一些逻辑运算和条件判断,比如当心情好时吃火锅,而心情不好的时候 ,吃巧克力,换句话说,在不同的条件下会触发程序的不同执行动作。(1)>、>=、<、<=四个关系运算符优先级相同,==、!=两个关系运算符优先级也相同,但>、>=、<、<= 的优先级比 ==、!a == b < c //等价于 a == (b < c),都是关系运算符,但 == 优先级 低于 关系运算符 <a > b == c //等价于 (a>b)==c,都是关系运算符,但 > 优先级 高于 关系运算符 ==

2023-12-11 15:14:33 364

原创 第三章 程序的基本结构和语句(四)

(2)scanf是一个非常容易用错的函数,尤其是输人多个数据时 ,很容易因为输入 的格 式问题导致对应的变量并没有得到期望的结果 ,往往会发现程序最终执行不正确却不知道问题出在哪里,所以,建议在 scanf语句之后,立即稍加 printf输出语句,通过输出查看通过 scanf函数输入的变量值是否和预期的完全一样。例:在 scanf 函数的格式控制字符串中加入了逗号,那么在输入数据的时候 ,也要在对应的所输入的数据之间输入逗号作为分隔,否则会得到错误的程序执行结果。1)getchar函数。

2023-12-08 18:50:02 412

原创 第三章 程序的基本结构和语句(三)

当然,一个有符号数也可以用%u输出,但这个有符号数是正数时设问题,是负数时,用%u 输出就会导致结果错误,所以一定要使用最合适的格式字符来输出数据,才能保证不出现错误。而用双引号""包含起来的头文件被# include时,开发软件会首先在当前源代码文件所在的目录下寻找,如果找不到 ,再去系统目录中寻找,所以,通常开发者自己写的一些头文件,在被#include 包含进来时,往往使用双引号""包含起来。printf函数实现的输出功能是将参数2,参数3,...,参数 n,按参数1给定的格式输出。

2023-12-08 18:32:20 1464

原创 第三章 程序的基本结构和语句(二)

当型循环结构:while 语句是典型的当型循环结构,语句先判断条件P,再决定是否执行 A操作,当条件 P为真时,反复执行 A 操作,直到条件 P 为假时才停止执行 A 操作 (停止循环)并继续往后执行其他代码。直到型循环结构:do... while语句是典型的直到型循环结构语句,先执行一次A操作,再判断条件P是否为真,如果为真则继续执行A操作(反复执行A操作),直到条件 P为假。例:先执行 A 操作 ,再执行 B操作,语句是从上到下、从左到右逐条执行的。循环结构分为两种:当型循环结构和直到型循环结构。

2023-12-08 11:20:10 398

原创 第三章 程序的基本结构和语句(一)

如果在写代码的过程中需要一条语句来占位,而又不希望这条语句执行任何有意义的内容,用空语句占位是可以的 ,但一般情况下,空语句的用处不大。5)复合语句,用{}括起来的语句,这些语句会被当作一个整体看待。if...else语句:用于根据条件执行不同的代码块,如果条件不成立,则执行else语句块中的代码。以上这些都是一些比较简单的语句,一个 C程序从 main 函数开始,顺序从上往下执行各条语句。3)表达式语句,由一个表达式构成的语句,分号是语句中不可缺少的组。printf(“x的值等于%d\n",x);

2023-12-07 14:46:12 407

原创 第二章 数据类型、运算符与表达式(十)

赋值的原则:赋值符号左侧和右侧的数据类型应该相同,类型不同时可以用强制类型转换运算符,当用强制类型转换运算符时 ,开发者必须自己明确知道不会造成赋值后的数据溢出(要充分考虑一个类型的取值范围,因为溢出得到的结果显然不是想要的结果),如果不遵照这样的原则,可能赋值结果就是难以预料的结果。a=1000000 * 1000000 //每个值都不会溢出,但结果会溢出,这样也不行,结果变得不可预料,这是容易犯的错误。//5赋给c,而后c=5的值为5,赋给b,最后,5再赋给a,相当于a=5。

2023-12-07 12:05:54 933

原创 第二章 数据类型、运算符与表达式(九)

(2) 强制类型转换,当自动类型转换无法达到目的时 ,就需要用强制类型转换 ,如 % 取余运算符,要求两侧均为整型量,如果 x 是 float 类型,x%5 就不合法,必须要用 (int)x%5 , 因为强制类型转换运算符优先级高于取余运算符%,所以会先计算 (int)x,得到一个整型中间变量,再对 5 进行取余操作。(2) (int)(x+y) 将 x+y的值转换成int型。注意:表达式x+y是用( )括起来的, 如果写成(int)x +y,那就只是将x转换成int型,然后与y相加。

2023-12-06 11:57:06 353

原创 第二章 数据类型、运算符与表达式(八)

C语言的运算符大致有13个分类 ,每个分类下面包含一到多个运算符,不必死记硬背,C 语言运算符分类表可放在手边,随时查阅,熟能生巧,自然就记住了。1)运算符优先级规则是先乘除,后加减,如果优先级相同,一般先算左边,后算右边(不同运算符,也有可能先算右边,后算左边)(5)% ,取余 ,也叫模运算符,运算符的两侧都要求为整型数 ,5%3=2。(4)/,除,如 5/3 ,这里是两个整数相除,结果会舍弃小数部分。先算a/=a-6,等于a=a/(a-6),a=2;再算a*=2,等于a=a*2,a=4;

2023-12-05 17:19:31 862

原创 第二章 数据类型、运算符与表达式(七)

(1)下图纵向向上的箭头表示当运算对象为不同类型时转换的方向,例如:如果一个int型要和一个 long型做运算,则依据从低类型往高类型转换,int 类型要首先转成 long 类型,然后再和 long类型做运算,结果为long类型。不同类型数值变量进行混合运算时,系统会尝试将它们的变量类型统一,然后再做混合运算,并且系统会选取参与运算的变量中,能表达最大数字的变量类型作为其他变量转换的目标类型。2、定义变量时,不赋初始值的变量中所保存的值是不确定的,所以,不赋初值的变量,不应该拿来参与运算。

2023-12-05 14:46:26 337

原创 第二章 数据类型、运算符与表达式(六)

"a"的最后 一个字符为 '\0' ,这是一个转义字符,也就是说"a"是由 两个字符构成,但 是\0如果出现在 printf 中进行输出,不会显示出来,而是作为字符串结束标记来标记这个字符串内容结束。没有输出,原因就是系统在输出整个 printf 中的字符串时,一旦遇到 '\0’,系统认为整个字符串输出结束, '\0'后面出现的任何内容都不会被输出。注意,在写一个字符串常量时,不要手工去增加 '\0' ,这是画蛇添足, '\0'是系统增加的。是由单引号包含起来的单个字符,比如 'a'

2023-12-04 19:01:27 750

原创 第二章 数据类型、运算符与表达式(五)

将字符常量存放到字符变量中,并不是把字符本身放到字符变量所属的内存中,而是把字符对应的ASCII码(一个数字)存放到内存中。注意:严格遵循单引号里只放一个字符(转义字符除外),虽然放多个字符不会报错,但是无法得到想要的结果。(1)在内存中,字符数据是以 ASCIl 码存储,说明字符型数据的存储形式和整数的存储形式类似。注意:字符变量只能存一个字符,而不是一个字符串,因为一个字符型变量在内存中只占 1 字节。(4)以字符形式输出时 ,计算机会先将内存中的 ASCIl码转换成相应的字符 ,然后输出。

2023-12-01 16:44:00 378

原创 第二章 数据类型、运算符与表达式(四)

它们的精度不同,float类型实数提供 7 位有效数字(考虑到四舍五入问题,保守算 6 位), double类型实数提供 15-16 位有效数字(考虑到四舍五入问题,保守算15 位),到底多少位有效数字 ,随机器系统而异。有效数字是什么意思?再看看数字0.1234,如果精度是 1 位有效数字,则存储的可能为 0.1XXXXX,如果精度是2位有效数字,则存储的可能是 0.12XXXX,以此类推。,永远无法整除,是一样的道理。如果精度是 2 位有效数字,则存储为 12000.0 ,也就是能存下最高的两位数值。

2023-11-30 15:45:55 932

原创 第二章 数据类型、运算符与表达式(三)

无符号型 unsigned int、unsigned short、unsigned long,只能存放不带符号的数字(正数和零),不能存放负数 ,所以 ,一个无符号整型变量存放的数字范围比带符号整型变量存放的数字范围大一倍。用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,此时0或1为二进制的最后一位。用A来表示10,B表示11,C表示12,D表示13,E表示14,F表示15。比如 210 是什么类型的常量?

2023-11-30 15:36:11 948

原创 第二章 数据类型、运算符与表达式(二)

(1)标识符:好像人的名字(如张三、李四),由字母、数字、下划线三种字符组成,并且第一个字符必须为字母或者下划线。变量肯定会有一个变盘名,在内存中会占用一定的存储空间 ,变量名其实就是一个标识符,同时,变盘名是区分大小写的,大小写不同的变量会被认为是两个不同的变量。(2)保留字:系统保留起来,有特殊的用途,所以不能将保留字作为标识符来使用, 否则会出现语法错误。在这个变盘名中,第一个字符表示类型,这里i表示int类型 ,加上几个单词的组合 ,每个单词首字母大写,见到变盘名就知道该变量表达的含义。

2023-11-30 15:26:31 351

原创 第二章 数据类型、运算符与表达式(一)

4、在程序代码中写注释的目的是记录一些程序开发时的思路等信息,防止日后遗忘或方便他人阅读自己所写的代码。注释的内容仅用于阅读,不影响所开发程序的实际功能, 注释分单行注释和多行注释。1、每个 C 语言程序项目都必须有一个 main 函数 ,函数体由大括号括起来,程序总是从 mam 函数开始执行 ,不管 main在整个程序中处于哪个位置。2、增加一条 printf语句表示向屏幕输出一条信息,遇到 "\n"表示换行。2)多行注释以 /* 开头 ,以 */ 结尾。1)单行注释用//开头。

2023-11-30 15:21:22 322

原创 第一章什么C/C++(二)

C 语言是在 B语言的基础上发展起来的。用B语言写了UNlX操作系统,B语言过于简单,功能有限,在 B语言的基础上设计了 C语言。C语言可以直接访问物理地址,进行位操作 ,可以直接对硬件操作,因此 C 语言既具备高级语言的功能, 也具备低级语言的功能, 用来写系统软 件,这是非常厉害的,同时 也是语言灵活性的表现。可以简单理解为C++语言是C语言的超集,或者反过来说 C语言的所有内容都可以在C++中使用。C语言中的内容是后续学好C++语言的基础,所以,第二章从 C 语言开始。

2023-11-30 15:14:14 372

原创 第一章什么C/C++(一)

4、出现工程命名弹框,Product Name输入自己的工程名称,Language里面选择C++,点击Next。6.断点调试,在代码左侧点击即可生成一个断点,代码执行到此处会自动暂停,点击下方的运行按钮会继续执行。2.打开安装好的Xcode,出现欢迎页面,点击Create a new Xcode project。5.选择好工程存放目录后,C++工程就新建好了,点击左上方启动按钮可以运行程序。3、出现工程选项弹框,点击macOS菜单下的Command Line Tool。

2023-11-30 15:12:11 321

原创 为什么要开始写C++课程

第一步、2个月学完mind+先入门课程,一共准备了60个课时,从第10个开始每个课时做个小游戏,培养编程思维。第三步、C++课程与arduino传感器入门主板套件课程。第二步、mind+与传感器入门主板套件课程。从今天开始给儿子准备C++入门课程。

2023-11-30 14:52:37 359

原创 关于vue打包后图片路径找不到的问题

//asserts引入的静态资源是相对路径 //而static引入静态资源时必须是绝对路径 slides: [ { //当asserts引入动态绑定的静态资源时,需要以模块的方式导入资源, //将图片作为模块加载进去 src: require(‘../../../asserts/img/pic1.jpg’), ...

2018-08-07 14:13:13 4784 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除