c语言入门
文章平均质量分 72
姜子牙大侠
这个作者很懒,什么都没留下…
展开
-
【C语言学习笔记】:内部与外部函数
C语言函数的声明和定义一个函数一般由两部分组成:声明部分执行语句C语言对变量而言,声明与定义的关系稍微复杂一些,在声明部分出现的变量有两种情况:一种是需要建立存储空间的。另一种是不需要建立存储空间的。前者称为定义性声明,简称定义;后者称为引用性声明。一般为了叙述方便,把建立存储空间的声明称定义,而把不需要建立存储空间的声明称为声明。在函数中出现的对变量的声明,除了用extern声明的以外都是定义,在函数中对其他函数的声明不是函数的定义。C语言内部函数一个函数只能被本文件中其他函数所调用,它称为内部函数。在定原创 2023-03-20 21:22:26 · 824 阅读 · 3 评论 -
【C语言学习笔记】:局部与全局变量
在复合语句内定义的变量只在复合语句范围内有效,只有在本复合语句内才能引用它们。在一个函数内部定义的变量只在本函数范围内有效,也就是说只有在本函数内才能引用它们,在此函数以外是不能使用这些变量的。在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效,这种复合语句也称为“分程序”或“程序块”。主函数中定义的变量也只在主函数中有效,并不因为在主函数中定义而在整个文件或程序中有效。在函数内定义的变量是局部变量,而在函数之外定义的变量称为外部变量,外部变量是全局变量。请按任意键继续. . .原创 2023-03-20 21:19:42 · 698 阅读 · 0 评论 -
【C语言学习笔记】: 函数调用
在主调函数中调用一个函数时,函数名后面括号中的参数称为“实际参数”。int maxNumber(int num1,int num2)//自定义比较大小函数。在定义函数中指定的形参,在未出现函数调用时,它们并不是占内存中的存储单元。在定义函数时指定的函数类型一般应该和return语句中的表达式类型一致。在调用有参函数时,主调函数和被调函数之间有数据传递关系。函数的返回值是通过函数中的return语句获得的。函数值的类型,应当在定义函数时指定函数值的类型。int main()//主函数。原创 2023-03-19 22:21:49 · 1141 阅读 · 0 评论 -
【C语言学习笔记】:字符数组
\0’代表ASCII码为0的字符,从ASCII码表中可以查到,ASCII码为0的字符不是一个可以显示的字符,而是一个“空操作符”,即它什么也不做。作用:把两个字符数组中的字符串连接起来,把字符串2接到字符串1的后面,结果放在字符数组1中,函数调用后得到一个函数值——字符数组1的地址。字符数组是用来存放字符数据的数组,字符数组中的一个元素存放一个字符,定义字符数组的方法和定义数值型数组的方法类似。在C语言中,是将字符串作为字符数组来处理的,字符串中的字符是逐个存放到数组元素中的。也只输出到遇“\0”结束。原创 2023-03-19 22:17:40 · 1022 阅读 · 0 评论 -
【C语言学习笔记】: 一维数组
如果在定义数值型数组时,指定了数组的长度并对之初始化,凡未被“初始化列表”指定初始化的数组元素,系统会自动把它们初始化为0。在定义数组时,需要指定数组中元素的个数,方括号中的常量表达式用来表示元素的个数,即数组长度。a[0]//就是数组a中序号为0的元素,它和一个简单变量的地位和作用相似。为了使程序简洁,常在定义数组的同时,给各数组元素赋值,这称为数组的初始化。在定义数组并对其中各元素赋值后,就可以引用数组中的元素。i++)//遍历数组。原创 2023-03-18 16:25:17 · 741 阅读 · 0 评论 -
【C语言学习】:十进制转换二进制
函数dectobin应在一行中打印出二进制的n。建议用递归实现。原创 2023-02-21 16:22:00 · 116 阅读 · 0 评论 -
【C语言学习笔记】:函数和对象
我们在main函数后面定义的函数, 如果想要在main函数内使用, 就必须在main函数前声明, 告诉编译系统, 后面有这个函数, 我要用啦!C++源文件的文件扩展名为.cpp, 也就是c plus plus的简写, 在该文件里有且只能有一个名为main的主函数, 它作为程序的入口. 因为这个主函数的存在, 所以C++被称为混合型语言.如果函数不需要返回值, 可以用void标识, 一旦使用void, 函数体不再使用return语句, 但是可以使用return;直接结束函数的执行, 返回到调用函数.原创 2023-02-11 11:44:27 · 502 阅读 · 0 评论 -
【C语言学习笔记】:快速排序
对于(5,6,9,8,7),选择5作为枢轴,得到(5,6,9,8,7),分成两个部分,前面部分为空,后面部分为(6,9,8,7),其中5已经有序。对于(6,9,8,7),选择6作为枢轴,得到(6,9,8,7),分成两个部分,前面部分为空,后面部分为(9,8,7),其中6已经有序。对于(0,3,1,2),选择0作为枢轴,得到(0,3,1,2),分成两个部分,前面部分为空,后面部分为(3,1,2),0已有序。第一趟子排序:针对整个数据记录(4,3,1,2,6,5,0,9,8,7)。# 代码实现(递归实现)原创 2023-01-27 11:35:11 · 53 阅读 · 0 评论 -
C语言学习笔记——实现扫雷小游戏
定义一个变量safe,表示翻开的不是地雷的土地,每次更新地图后,safe加一。如果最后翻开的不是地雷的土地等于地图的大小减地雷数,那么排除所有地雷,确认安全。如果翻开的位置在mine上显示为1,那么翻到地雷了,输出被炸死,打印地雷地图,让玩家死得明白。printf("------1.开始游戏------\n");printf("------0.退出游戏------\n");printf("------1.开始游戏------\n");printf("------0.退出游戏------\n");原创 2023-01-24 15:59:12 · 108 阅读 · 0 评论 -
C语言学习笔记——用C语言实现进度条
首先我们需要将[ ]固定在左右两边,中间预留下空间,然后用“=”进行填充。格式化输出,‘-’表示左对齐,100表示固定列宽,然后‘\r’ 表示回车,即每次打印完使光标回到最开始位置。如果不加睡眠时间,结果一下就全打印出来了,但我们想让它稍微慢一点,毕竟是进度条嘛,而Linux系统下默认sleep时间单位为秒(s),这样的话又觉得间隔时间太长了,于是就有了usleep,它是以微妙计的。再明确一下,‘\n’和‘\r’这两个概念:‘\n’表示换行,换到当前行的下一行,即光标指向下一行最开始的位置;原创 2023-01-23 15:27:15 · 961 阅读 · 0 评论 -
C语言学习笔记——如何打印爱心图形
• C语言循环结构使用• 数学的爱心图形函数,根据方程判断是否放置构成爱心图形的字符。原创 2023-01-23 15:08:49 · 426 阅读 · 0 评论 -
C语言入门学习笔记十五——动态内存分配!
动态内存分配(动态存储期)在程序执行并使用该变量的时候分配内存空间,使用完毕立即释放.动态内存分配就 是指在程序执行的过程中动态地分配或者回收存储空间的分配内存的方法。动态内存分配不像数组等静态内存分配方法那样需要预先分配存储空间,而是由系统根据 程序的需要即时分配,且分配的大小就是程序要求的大小。当程序运行到需要一个动态分配的变量或对象时,必须向系统申请取得堆中的一块所需大小的存贮空间,用于存贮该变量或对象。原创 2023-01-21 18:22:51 · 142 阅读 · 0 评论 -
C语言入门学习笔记十四——二级指针、指针数组和指向函数的指针
(p+1)+1表示第 1 行第 1 个元素的地址:*(p+1)单独使用时表示的是第 1 行数据,放在表达式中会被转换为第 1 行数据的首地址,也就是第 1 行第 0 个元素的地址,因为使用整行数据没有实际的含义,编译器遇到这种情况都会转换为指向该行第 0 个元素的指针;程序在运行过程中需要的是数据和指令的地址,变量名、函数名、字符串名和数组名在本质上是一样的,它们都是地址的助记符:在编写代码的过程中,我们认为变量名表示的是数据本身,而函数名、字符串名和数组名表示的是代码块或数据块的首地址;原创 2023-01-21 18:09:45 · 453 阅读 · 0 评论 -
C语言入门学习笔记十三——指针做函数参数,指针做函数返回类型
用指针作为函数返回值时需要注意的一点是,函数运行结束后会销毁在它内部定义的所有局部数据,包括局部变量、局部数组和形式参数,函数返回的指针请尽量不要指向这些数据,C语言没有任何机制来保证这些数据会一直有效,它们在后续使用过程中可能会引发运行时错误 , 但是,这里所谓的销毁并不是将局部数据所占用的内存全部抹掉,而是程序放弃对它的使用权限,弃之不理,后面的代码可以随意使用这块内存 , 如果使用及时也能够得到正确的数据,如果有其它函数被调用就会覆盖这块内存,得到的数据就失去了意义。利用指针:。原创 2023-01-20 12:26:00 · 1038 阅读 · 0 评论 -
C语言入门学习笔记十二——指针及其相关知识(二)
数组在内存中只是数组元素的简单排列,没有开始和结束标志,在求数组的长度时不能使用指针p来sizeof(p) / sizeof(int)这样来求,因为 p 只是一个指向 int 类型的指针,编译器并不知道它指向的到底是一个整数还是一系列整数(数组),所以 sizeof(p) 求得的是 p 这个指针变量本身所占用的字节数,而不是整个数组占用的字节数。C语言中没有特定的字符串类型,我们通常是将字符串放在一个字符数组中,所以字符数组归根结底还是一个数组,上节讲到的关于指针和数组的规则同样也适用于字符数组。原创 2023-01-20 12:19:55 · 73 阅读 · 0 评论 -
C语言入门学习笔记十二——指针及其相关知识(一)
指针也就是内存地址,指针变量是用来存放内存地址的变量,不同类型的指针变量所占用的存储单元长度是相同的,而存放数据的变量因数据的类型不同,所占用的存储空间长度也不同。有了指针以后,不仅可以对数据本身,也可以对存储数据的变量地址进行操作。计算机中所有的数据都必须放在内存中,不同类型的数据占用的字节数不一样,例如 int 占用 4 个字节,char 占用 1 个字节。为了正确地访问这些数据,必须为每个字节都编上号码,就像门牌号、身份证号一样,每个字节的编号是唯一的,根据编号可以准确地找到某个字节。原创 2023-01-19 14:10:36 · 609 阅读 · 0 评论 -
11.零基础学C语言——memset函数和calloc函数
有时候,我们在程序中需要一段内存来处理数据,但是又不确定是要多大内存的情况下,比如 我们申请一个数组 a[100] 但是事前我们并不知道会不会用得完这100个元素,比如我们只会用到10个,那么剩下的90个就会还在占用空间,就显得很浪费空间,这时候使用calloc函数是用来在内存的动态存储区中(堆中)分配一个连续存储空间。实际上,任何事物都有两面性,有好的一面,必然存在不好的地方。每种类型的变量都有各自的初始化方法,memset() 函数可以说是初始化内存的“万能函数”,通常为新申请的内存进行初始化工作。原创 2023-01-19 14:01:03 · 88 阅读 · 0 评论 -
10.零基础学C语言——C语言的内存四区
C语言中定义4个内存区间是: 代码区, 静态存储区, 栈区, 堆区. 其中栈区和堆区是属于动态存储区可执行文件在存储(也就是还没有载入到内存中)的时候,分为:代码区、静态区和未初始化数据区3个部分。一个正在运行着的C编译程序占用的内存分为代码区、静态数据区、未初始化数据区、堆区 和 栈区5个部分。原创 2023-01-17 21:09:59 · 192 阅读 · 0 评论 -
9.零基础学C语言——宏定义与枚举类型
以#号开头的都是编译预处理指令,它们不是C语言的成分,但是C程序离不开它们,#define用来定义一个宏,程序在预处理阶段将用define定义的来内容进行了替换。因此在程序运行时,常量表中并没有用define定义的常量,系统不为它分配内存。define定义的常量,预处理时只是直接进行了替换,,它用来将一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。,因此在编译时它不对宏的定义进行检查,作用域不影响对常量的访问。它的常量值只能是字符串或数字。原创 2023-01-17 21:01:52 · 188 阅读 · 0 评论 -
8.零基础学C语言——struct 结构体与 union 共用体
由于内存的读取时间远远小于CPU的存储速度,这里用设定数据结构的对齐系数,即牺牲空间来换取时间的思想来提高CPU的存储效率。内存对齐”应该是编译器的“管辖范围”。编译器为程序中的每个“数据单元”安排在适当的位置上。但是C语言的一个特点就是太灵活,太强大,它允许你干预“内存对齐”。如果你想了解更加底层的秘密,“内存对齐”对你就不应该再模糊了。这也是一个大小端模式的问题每个特定平台上的编译器都有自己的默认“对齐系数”(也叫对齐模数)。原创 2023-01-16 19:04:43 · 222 阅读 · 0 评论 -
7.零基础学C语言——函数知识总结!
在使用函数之前必须先定义,后使用。定义函数要包括:1、指定函数的数据类型,以便后续返回值的调用2、指定函数的名字,以便后续调用3、指定函数形参的类型和名字,以便后续传递数据,对于无参(void)可不用函数类型+函数名+(参数表){函数体参数值的()起到了表示函数调用的重要作用即使没有参数也需要(),如果有参数,则需要给出正确的数量和顺序,这些值会按照一定的顺序(看编译环境一般是从右到左)依次来初始化函数中的参数。原创 2023-01-16 18:39:53 · 70 阅读 · 0 评论 -
6.零基础学C语言——数组与字符/字符串
一个常量变量就是一个用来存储数值的命名区域。同样,一个数组就是一个用来存储一系列变量值的命名区域,因此,可以使用数组组织常量变量。也就是说,数组是一组有序数据的集合,存储在数组中的值称为数组元素。每个数组元素有一个相关的索引(也称为关键字),它可以用来访问元素。在大多数编程语言中,数组都具有数字索引,而且这些索个通常是从0或1开始的。数组中的每个元素都属于同一个数据类型。一维数组是由数字组成的以单纯的排序结构排列的结构单一的数组。一维数组是计算机程序中最基本的数组。原创 2023-01-15 23:32:15 · 135 阅读 · 0 评论 -
5.零基础学C语言——3种必学必会的循环结构
其中语句标号是按标识符规定书写的符号, 放在某一语句行的前面,标号后加冒号(:)。在检查while()条件是否为真之前,该循环首先会执行一次do{}之内的语句,然后在while()内检查条件是否为真,如果条件为真的话,就会重复do...while这个循环,直至while()为假。另外,循环结构的三个要素:循环变量、循环体和循环终止条件,循环结构在程序框图中是利用判断框来表示,判断框内写上条件,两个出口分别对应着条件成立和条件不成立时所执行的不同指令,其中一个要指向循环体,然后再从循环体回到判断框的入口处.原创 2023-01-15 23:16:50 · 65 阅读 · 0 评论 -
零基础学C语言——if-else判断语句和switch-case选择语句
当表达式的值与某一个case后面的常量表达式的值相等时,就执行此case后面的语句,若所有的case中的常量表达式的值都没有与表达式的匹配的,就执行default后面的语句,每一个case的常量表达式的值必须互不相同,否则就会出现互相矛盾的现象,(对表达式的同一个值,有两种或多种执行方案),当没有一个表达式为 True,或者第一个为 True 的表达式的对应值为 Null时,Switch 会返回一个Null值。常见的错误:忘了大括号,if后面的分号,错误使用 == 和 = ,没有匹配或令人困惑的else。原创 2023-01-14 20:42:38 · 318 阅读 · 0 评论 -
零基础学C语言——运算符、进制转换、输入输出
2、十进转八:(规则和十转二一致)除R取余法,乘E取整法25.35 :整数 25/8 商3 余1 3/8 余3 除到商数零为止 小数 0.35 * 8=2.80 取2 0.8 * 8=6.4 取6 0.4 * 8=3.2 取3 0.2 * 8=1.6 取1 乘到所需要的精度或者积为零为止。3、二转十 (1101.11):1 * 2^3+1* 2^2+0 * 2^1+1 * 2^0+1 * 2^ -1+1 * 2^-2=13.75。(存储顺序由编译器决定)原创 2023-01-14 20:32:40 · 207 阅读 · 0 评论 -
零基础学C语言——基本的数据的表现形式与运算
在定义变量时需要指定变量的类型。常量也是区分类型的。因为数据都是存放在内存中的单元中的,它 是具体存在的,而存储单元是有限制大小字节的,每一个存储单元存放数据的范围是有限的。所以必须对数据分配储存单元的安排,包括储存单元的长度(占用字节数)以及数据存储的形式,不同类型的存储。也是为了方便编程人员对数据进行操作,不然一堆数据放下来,都不知道哪个是哪个,这样分类了之后大大提升了编程效率。原创 2023-01-13 18:49:11 · 80 阅读 · 1 评论 -
从零开始学C语言 --- C语言的基本知识总结
一个C程序是由一个或者多个函数组成的,但是其中必定要有且只有一个main函数,程序开始也是从main函数开始的。一个函数包含两部分:1)函数首部,函数的第一行:函数类型、函数名,(函数参数类型,函数参数名称),其是(形式参数),形式参数可以是void ,也可什么都没有。2)函数体,表示函数花括号下的程序,一般都有:声明部分,一般在使用一个变量之前,必须进行对其声明定义类型(数据类型),在每行数据声明或者C语句后必须有一个分号表示结束。原创 2023-01-13 18:36:16 · 74 阅读 · 1 评论