![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
文章平均质量分 77
对C语言的语法介绍
轻颂呀
努力学习编程!
展开
-
动态内存管理
我们之前在申请空间时,都是一些固定空间。如果我们后面想调整空间的大小是办不到的。C语言提供了一些函数可以让我们实现这个操作(头文件<stdlib.h>,空间在堆区开辟)。原创 2024-04-24 09:26:34 · 601 阅读 · 0 评论 -
递归【C语言】
例如1,1,2,3,5,8,13,21,34......规律是从第三项开始包括第三项以后每一项都是前两项的和,开始的1,1是规定我们不能更改。我们首先创建一个Fact函数,然后令n为第几项,当n>=3时,Fact(n)=Fact(n-1)+Fact(n-2)。在运行的时候,它是先计算把Fact(n-1)计算完然后在计算Fact(n-2)。递归的核心思想就是把一个大问题层层转化成一个与原问题相似,但规模比较小的子问题,直到子问题不能在被拆分,这样递归就结束了。这是n的阶乘公式:n!=3*2*1*1(0!原创 2024-02-01 14:48:54 · 245 阅读 · 1 评论 -
函数【C语言】
在函数使用过程中,把函数的参数分为形参和实参。如果你只定义了一个函数而不去调用,函数里的参数只会形式上存在,不会向内存申请空间,不会真实存在这就是形参。一般来说,一段程序中的代码所用的名字并不是总是有效的,而限定名字有效的区域叫作用域。虽然形参和实参有联系,但他们的地址却不一样,我们可以理解为形参是实参的临时拷贝。4.如果return后的返回值不符合函数的返回值,系统会自动将返回的值隐式转化为函数返回类型。事实上,形参和实参的数组是一个数组。2.形参如果是二维数组,数组行可以不写,但列要写。原创 2023-12-16 11:40:19 · 429 阅读 · 2 评论 -
简介编译和链接
C语言是一门计算机语言,C语言源代码都是文本文件是无法执行的,中间要经过和才能生成二进制的可执行文件才能执行。原创 2024-04-13 17:51:26 · 251 阅读 · 2 评论 -
结构体(struct)
C语言提供了许多内置类型,如:char、int、double等,假设我想描述一本书,这时单一的内置类型是不行的。因为要描述一本书需要作者、定价等。所以C语言为我们提供了结构体这种自定义的数据类型。下面我来介绍一下结构体。原创 2024-04-05 11:33:52 · 742 阅读 · 3 评论 -
简介指针(2.数组)
我们可以这样理解二维数组,把二维数组中的每一行看成一个一维数组只不过是连在一起的。所以二维数组中数组名表示的就是第一行的地址,是一维数组的地址。在传参时传递的是第一行的地址。原来,在sizeof中数组名代表的是整个数组,另外&+数组名也可以代表整个数组。大家会认为以上代码打印出来是多少,既然arr是首元素的地址,那打印的不就是4/8其中一个吗?通过上面代码可以发现arr地址和&arr[0]是一样的,那么我们可以推断出数组名就是数组首元素的地址。指针变量也是变量,是变量就有地址,那指针变量的地址存放在哪里?原创 2024-03-26 20:50:32 · 192 阅读 · 0 评论 -
常用内存函数
函数memcpy从source的位置开始向后复制num个字节的数据到destination指向的内存位置。函数memset是用来设置内存的,将内存中的值以字节为单位设置成想要的内容。memmove和memcpy没有什么区别,唯一的区别就是该函数的source和destination的内存是可以重叠的。上次我介绍了一些关于对字符串操作的函数。如果ptr1大于ptr2返回大于0的数,如果ptr1小于ptr2返回小于0的数,等于则返回0。比较从ptr1和ptr2指针指向的位置开始,向后的num个字节。原创 2024-03-29 10:25:39 · 401 阅读 · 1 评论 -
整数和浮点数在内存中的存储方式
我们平时会常常用到的整数和浮点数,它们在内存中是怎么存储的呢?在这篇文章中我会给大家介绍一下。原创 2024-04-01 11:18:29 · 998 阅读 · 0 评论 -
常用字符串函数
str中它包含了0个或者多个由delimiters字符串中一个或者多个分隔符分割的标记,当找到str中的一个标记时,将它用 ‘\0’ 结尾,返回一个指向这个标记的指针。下面我介绍一些关于字符串的常用函数strlen,strcpy,strcat,strcmp,strncpy,strncat,strncmp,strstr,strtok(头文件都是string)(如果str1大于str2则返回大于0的数,小于返回小于0的数,等于返回0)给它一个地址它会一直向后读,直到遇到'\0'停下来,且返回的值是无符号整型。原创 2024-03-21 10:59:34 · 427 阅读 · 1 评论 -
简介指针(3.函数)
就是把函数的地址存到一个数组中,那函数指针的数组如何定义呢?函数指针是指向函数的指针变量。根据前面我讲的内容,不难得出,函数指针变量是来存放函数的地址的。通过上面介绍相信大家一定对指针有了更深的理解,这一篇我主要介绍指针与函数的关系。这其实就是一个回调函数,那啥是回调函数呢?回调函数就是一个通过函数指针调用的函数。指针可不是随便看看就能学会的,一定要多练,只有这样才能学会!从上可以看出函数名就代表函数的地址。原创 2024-03-26 20:50:46 · 149 阅读 · 0 评论 -
关于分支与循环
还有,experession一定要是整型表达式,case后一定要是整型常量表达式,case后一定要空格!还有一点,在编写case里内容时,写完记得加一下break,break是跳出switch语句。听着很方便吧,但是,如果使用不当的话就会导致在函数内随意跳转,打乱程序执行流程。真就执行,假就不执行。循环结构我们可以用while,for ,do–while来实现。在if中判断是否相等时,我建议你写成1==a,写成a==1也可以,但,有时我们会忘记写第二个等号。它们分别是while,for,do–while。原创 2023-12-07 20:29:54 · 862 阅读 · 2 评论 -
关于文件的操作
我们写的程序的数据是存储在电脑的内存中,如果程序退出,内存回收,数据就丢失了。如果想要把数据进行持久化的保存,我们可以使用文件。原创 2024-04-12 15:16:21 · 1094 阅读 · 2 评论 -
简介指针(1.基础)
如果机器是32位,也就是相当有32根地址总线,每根地址线出来的电信号转换成数字信号后是1或者0,那我们把32根地址线产生的2进制序列当做一个地址,那么一个地址就是32个bit位,需要4个字节才能存储。可以理解为无具体类型的指针(或者叫泛型指针),这种类型的指针可以用来接受任意类型地址。p1和p2都指向a的地址所以是一样的,p1指向的是int类型,int类型有4个字节所以加1跳过4个字节。一般 void* 类型的指针是使用在函数参数的部分,用来接收不同类型数据的地址,这样的设计可以实现泛型编程的效果。原创 2024-03-26 20:50:17 · 513 阅读 · 0 评论