C语言笔记
文章平均质量分 91
古德猫宁-
莎娃迪卡思密达
展开
-
C语言指针详解(2)(能看懂文字就能明白系列)
前面有篇文章简单的介绍了指针及其一些简单的运算和野指针,指针提供了一种以符号形式使用地址的方法。因为计算机的指令非常依赖地址,指针在某种程度上把程序员想要传达的指令以更接近机器的方式表达。因此,使用指针的程序更有效率。尤其是指针能有效地处理数组。数组表示法其实是在变相地使用指针。原创 2023-12-17 23:27:20 · 1501 阅读 · 57 评论 -
深入理解数据在计算机中如何存储之浮点数(能看懂文字就能明白系列)
在前面的文章中,我们了解了整型的存储方式,那浮点数是否和整型的存储方式是否一样,如果不一样,那浮点数到底是如何存储的呢理解浮点数在内存中是如何存储的,和整型存储的方式有什么区别。原创 2023-12-16 23:55:02 · 1164 阅读 · 39 评论 -
C语言动态内存分配详解(能看懂文字就能明白系列)
C语言提供了一个动态内存开辟的函数(malloc):原型:该函数接受一个参数:所需的内存字节数。malloc()函数会找到合适的空闲内存块,这样的内存时匿名的。也就是说,malloc()分配内存,但是不会为其赋名,而是返回动态内存分配内存块的首字节地址。因此,我们可以把该地址赋给一个指针变量,并使用指针访问这块内存。int* pst;解释:以上代码为10个int类型的值请求空间,并用一个指针pst指向该位置。注意。原创 2023-12-10 23:49:24 · 1605 阅读 · 25 评论 -
深入理解数据在内存中是如何存储的,位移操作符如何使用(能看懂文字就能明白系列)文章超长,慢慢品尝
理解数据在计算机中以什么样的方式表现,又用什么方式存储的,各种进制之间如何转换,数据在内存中的表现形式,左移操作符和右移操作符如何移,四个位操作符的计算规则本文内容比较多,只要掌握了使用二进制数来表示信息的方法及其运算机制,也就自然能够了解程序的运行机制了。原创 2023-12-07 14:07:22 · 2087 阅读 · 84 评论 -
C语言枚举详解,typedef简介(能看懂文字就能明白系列)
什么是枚举,顾名思义就是列举,把可能的取值一一列举出例如,月份有12个月,可以一一列举,一星期有七日,可以一一列举,常见的颜色有红黄橙绿青蓝紫等等。认识枚举是什么及其优点,掌握枚举类型的使用,对typedef有一个初步的认识都是重点与#define不同,typedef创建的符号名只受限于类型,不能用于值。// 使用 #define 的方式100。原创 2023-12-05 10:07:09 · 2366 阅读 · 45 评论 -
C语言联合体详解(能看懂文字就能明白系列)文章很长,慢慢品尝
前面两篇文章已经将结构体介绍的差不多了,那么本文将会介绍C语言中的联合体,它与结构体有什么区别呢?请接着往下看像结构体一样,联合体是一种数据类型,也是由一个或者多个成员构成,这些成员可以是不同的类型,它能在内存空间中存储不同的类型数据(注意:不是同时存储)。编译器只为最大的成员分配足够大的内存空间。联合体的特点是所有成员共用一块内存空间。共用体(感觉这个词更贴切一点)给联合体其中一个成员赋值,其他成员的值也跟着变化。典型用法是,设计一种表以存储既无规律,事先不知道顺序的混合类型。原创 2023-12-04 14:39:30 · 1558 阅读 · 18 评论 -
C语言结构体详解(二)(能看懂文字就能明白系列)文章很长,慢慢品尝
结构体对齐规则主要有以下几点:结构体的第一个成员对齐和结构体变量起始位置偏移量为0地址处。其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处。对齐数=编译器默认的一个对齐数与该成员变量大小的较小值 注意:VS默认的值为8 Linux中gcc没有默认对齐数,对齐数就是成员自身的大小结构体总大小为最大对齐数(结构体中每个成员变量都有一个对齐数,所有对齐数中最大的)的整数倍。原创 2023-12-03 15:16:26 · 1263 阅读 · 33 评论 -
C语言指针详解(1)(能看懂字就能明白系列)文章超长,慢慢品尝
指针?什么是指针?从根本上,指针(pointer)是一个值为内存地址的变量(或者数据对象)。比如char类型变量的值是字符,int类型变量的值是整数,指针变量的值是地址。原创 2023-11-17 22:39:03 · 343 阅读 · 11 评论 -
C语言结构体详解(一)(能看懂文字就能明白系列)
引子:假如我们要设计一个程序来打印一份图书目录,打印每本书的各种信息:书名、作者、出版社、版权日期、页数和价格等。其中的一些项目(书名,作者)可以存储在字符数组中,其他项目需要一个int数组或者float数组来存储(价格,页数)。这样用七个不同的数组分别记录每一项的内容比较麻烦,且需要开辟许多空间,特别是要创建多份列表的时候。所以,我们需要一种既可以包含字符串又能包含数字的数据形式,而且还要保持各信息的独立,C语言中的结构体就能满足你的需求,接下来让我来介绍结构体是什么,有什么用,怎么用。原创 2023-12-02 18:23:55 · 1339 阅读 · 45 评论 -
初学C语言中,else悬空的问题(各位大哥们,刚开始学C语言,人生第一次写文章,多多指教和支持)
在上述的的代码中,第一个if和else语句对齐,使我们误以为两者之间是匹配的,当第一个if语句不成立的时候(也就是a不等于一),就会去执行else语句。实际上第二个if和else才是匹配的,if......else是嵌套在第一个if语句中的,当第一个if语句不满足条件时,后面的if和else也就不会去执行,最后啥也不会打印。可能很多人初学的直接上来就看if的判断语句中,a为零,不等于一,那就执行else子句,打印“nihao”,结果去运行程序的时候,输出结果是啥也不输出。原创 2023-10-23 14:14:06 · 519 阅读 · 6 评论 -
C语言函数详解(能看懂文字就能明白系列)文章很长,慢慢品尝
其实自定义函数和库函数是一样的,形式如下:ret_type fun_name(形式参数)这里ret_type 是函数返回类型,fun_name 是函数名,括号中放的是形式参数,{}括起来的是函数体1、函数名是自定义的,根据实际情况起名字2、参数的个数也是根据实际情况来确定,可以有0个参数,也可以有多个参数3、函数的返回值:函数可以返回值,也可以不返回,要根据实际的情况来写,函数不返回值的时候,返回类型写void。原创 2023-10-28 22:33:25 · 835 阅读 · 18 评论 -
C语言数组详解,终极版本(能看懂文字就能明白系列)文章很长,慢慢品尝
简单来说,数组就是一组相同元素的集合。数组中存放的是一个或者多个数据,但。原创 2023-10-26 13:46:48 · 1417 阅读 · 12 评论 -
C语言函数递归详解(能看懂文字就能明白系列)
当函数是第一级递归调用时,会创建一个变量n,然后在该函数中药要调用Fib()两次,在第二级递归调用要分别创建两个变量n,这两次调用中的每次调用又会进行两次调用,因而在第三级递归中要创建4个名为n的变量。另外,递归不方便阅读和维护。函数不返回,函数对应的栈帧空间就一直占用,所以如果函数调用中存在递归调用的话,每一次递归函数调用都会开辟属于自己的栈帧空间,直到函数递归不再继续,开始回归,才逐层释放栈帧空间。结束递归是使用递归的难点,因为如果递归代码中没有终止递归的条件测试部分,一个调用自己的函数会无限递归。原创 2023-11-05 13:41:57 · 4686 阅读 · 9 评论 -
除了用scanf读取字符外,你还会用getchar吗,getche呢?那getch呢
其实用scanf()和getchar()来读取一个字符时,首先是将输入的字符接受到缓存区,缓冲区是一块为用户的输入预留的内存区域,缓冲区不会自动释放,直到用户按下回车键,缓冲区内的字符才会被释放,让我们的程序收到。我们希望在按下一个键之后,计算机就能马上做出反应,而不再需要按下多余的“enter”键。没错,使用scanf()和getchar()都可以读取一个字符,但是当用户输入一个字符之后,程序不会继续往下执行,直到用户按下“Enter”键,程序才会认为刚才的输入已经结束,然后继续执行余下的内容。原创 2023-11-11 23:20:11 · 410 阅读 · 14 评论