C语言
文章平均质量分 92
记录学习C语言的点滴
cdtaogang
冰冻三尺非一日之寒,滴水石穿非一日之功
展开
-
C语言学习之路(高级篇)—— 变量和内存分布(下)
在理解C/C++内存分区时,常会碰到如下术语:数据区,堆,栈,静态区,常量区,全局区,字符串常量区,文字常量区,代码区等等,初学者被搞得云里雾里。在这里,尝试捋清楚以上分区的关系。堆,栈,全局/静态存储区。常量区,全局区、静态区。字符串常量区、常变量区。存放程序编译后的二进制代码,不可寻址区。可以说,C/C++内存分区其实只有两个,即代码区和数据区。原创 2022-12-21 23:05:43 · 779 阅读 · 0 评论 -
C语言学习之路(高级篇)—— 变量和内存分布(上)
数据类型本质是固定内存大小的别名,是个模具,C通过数据类型定义变量;数据类型大小计算(sizeof);可以给已存在的数据类型起别名typedef;数据类型的封装(void万能类型);char a;int b;char c;int d;};// 直接修改d属性 m1 . d = 200;// m1.d = 200 // 间接修改d属性 struct MyStruct * p = & m1;以上间接修改d属性的最简单的方式,我们还可以通过步长来找到d属性在内存中的位置;原创 2022-12-08 22:58:31 · 515 阅读 · 0 评论 -
C语言学习之路(基础篇)—— 文件操作(下)
说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家!示例1: 从文件开头移动个字节(会覆盖原有位置上的字符)示例2: 从文件末尾移动个字节(会覆盖原有位置上的字符)示例3: 从当前位置移动个字节(会覆盖原有位置上的字符)示例: 把文件光标的读写位置移动到文件开头示例: 获取文件流(文件光标)的读写位置,同时也可以根据返回值测试出该文件有多少个字符(字节)stat内各参数的说明:示例1: 使用函数判断文件是否存在示例2: 使用函数判断文件是否存在,存在则返回文件大小判断文本文件原创 2022-12-06 00:09:07 · 282 阅读 · 0 评论 -
C语言学习之路(基础篇)—— 文件操作(上)
说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家!磁盘文件指一组相关数据的有序集合,通常存储在外部介质(如磁盘)上,使用时才调入内存。设备文件在操作系统中把每一个与主机相连的输入、输出设备看作是一个文件,把它们的输入、输出等同于对磁盘文件的读和写。计算机的存储在物理上是二进制的,所以物理上所有的磁盘文件本质上都是一样的:以字节为单位进行顺序存储。从用户或者操作系统使用的角度(逻辑上)把文件分为:在语言中用一个指针变量指向一个文件,这个指针称为文件指针。是系统使用定义出来的有关文件信原创 2022-12-03 14:18:54 · 725 阅读 · 0 评论 -
C语言学习之路(基础篇)—— 复合类型(自定义类型)
数组:描述一组具有相同类型数据的有序集合,用于处理大量相同类型的数据运算。结构体:将多个相同或不同类型的数据存在在一块连续的内存空间中。有时我们需要将不同类型的数据组合成一个有机的整体,如:一个学生有学号/姓名/性别/年龄/地址等属性。显然单独定义以上变量比较繁琐,数据不便于管理。C语言中给出了另一种构造数据类型——结构体。先声明结构体类型再定义变量名在声明类型的同时定义变量直接定义结构体类型变量(无类型名)原创 2022-11-27 22:49:14 · 601 阅读 · 3 评论 -
C语言学习之路(基础篇)—— 内存管理
类型作用域生命周期存储位置auto变量一对{}内当前函数栈区static局部变量一对{}内整个程序运行期初始化在data段,未初始化在BSS段extern变量整个程序整个程序运行期初始化在data段,未初始化在BSS段static全局变量当前文件整个程序运行期初始化在data段,未初始化在BSS段extern函数整个程序整个程序运行期代码区static函数当前文件整个程序运行期代码区register变量一对{}内当前函数运行时存储在CPU寄存器字符串常量。原创 2022-11-24 00:33:59 · 1004 阅读 · 2 评论 -
C语言学习之路(基础篇)—— 指针(下)
说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家!示例1:整型变量作为函数的形参,无法改变实参的值示例2:指针变量作为函数的形参,可以改变实参的值2) 数组名做函数参数数组名做函数参数,函数的形参会退化为指针。那么就需要传递数组元素个数,让printf_arr函数知道,才能打印数组其他元素补充:在函数中定义的变量叫局部变量,局部变量一旦在函数结束之后就会被释放空间,所以在getNum函数return后,再去main函数中操作这块被释放空间是非法的,但是编译器不会告诉我们,这原创 2022-11-20 23:27:04 · 1553 阅读 · 0 评论 -
C语言学习之路(基础篇)—— 指针(上)
计算机的组成中,用来存储程序和数据,辅助CPU进行运算处理的重要部分。内部存贮器,暂存程序/数据——掉电丢失。外部存储器,长时间保存程序/数据—掉电不丢ROM、ERRROM、FLASH(NAND、NOR)、硬盘、光盘。内存是沟通CPU暂存放CPU中的运算数据暂存与硬盘等外部存储器交换的数据指针也是一种数据类型,指针变量也是一种变量指针变量指向谁,就把谁的地址赋值给指针变量“*”操作符操作的是指针变量指向的内存空间1、*与符号结合代表是一个指针变量。原创 2022-11-16 22:21:53 · 1725 阅读 · 0 评论 -
C语言学习之路(基础篇)—— 函数
函数就是一段封装好的,可以重复使用的代码,它使得我们的程序更加模块化,不需要编写大量重复的代码。函数可以提前保存起来,并给它起一个独一无二的名字,只要知道它的名字就能使用这段代码。函数还可以接收数据,并根据数据的不同做出不同的操作,最后再把处理结果反馈给我们。返回类型 函数名(形式参数列表) {数据定义部分;执行语句部分;}原创 2022-11-11 22:33:41 · 2045 阅读 · 0 评论 -
C语言学习之路(基础篇)—— 数组和字符串(下)
fgets()在读取一个用户通过键盘输入的字符串的时候,同时把用户输入的回车也做为字符串的一部分。fgets()函数是安全的,不存在缓冲区溢出的问题。在2011年12月,ANSI 采纳了 ISO/IEC 9899:2011 标准,标准中删除了 gets()函数,使用一个新的更安全的函数gets_s()替代;由于scanf()和gets()无法知道字符串s大小,必须遇到换行符或读到文件结尾为止才接收输入,因此容易导致字符数组越界(缓冲区溢出)的情况,即内存污染。字符串是一种特殊的char的数组。原创 2022-11-09 22:11:09 · 2318 阅读 · 0 评论 -
C语言学习之路(基础篇)—— 数组和字符串(上)
在程序设计中,为了方便处理数据把具有相同类型的若干变量按有序形式组织起来——称为数组。数组就是在内存中连续的相同类型的变量空间。同一个数组所有的成员都是相同的数据类型,同时所有的成员在内存中的地址是连续的。将若干个相同数据类型的变量存放在一个连续的内存空间。数组的最小单位是元素,数组中的每一个元素都是一个变量将基本类型构建成类型。相同类型的数据存放在一个集合中,这种的构造类型就是数组。这些数组元素可以是基本数据类型或构造类型。// 数值数组 struct Stu boy [ 10 ];原创 2022-11-07 23:49:12 · 2072 阅读 · 0 评论 -
C语言学习之路(基础篇)—— 程序流程结构
C语言支持最基本的三种程序运行结构:顺序结构、选择结构、循环结构。顺序结构:程序按顺序执行,不发生跳转。选择结构:依据是否满足条件,有选择的执行相应功能。循环结构:依据条件是否满足,循环多次执行某段代码。原创 2022-11-05 01:09:25 · 1767 阅读 · 0 评论 -
C语言学习之路(基础篇)—— 运算符与表达式
类型转换的原则:占用内存字节数少(值域小)的类型,向占用内存字节数多(值域大)的类型转换,以保证精度不降低。数据有不同的类型,不同类型数据之间进行混合运算时必然涉及到类型的转换问题。数据不丢失,为了保证数据不丢失一般都是小的转大的。C 语言的比较运算中,原创 2022-11-03 00:13:28 · 2033 阅读 · 0 评论 -
C语言学习之路(基础篇)—— 数据类型(下)
打印格式含义%d输出一个有符号的10进制int类型%o(字母o)输出8进制的int类型%x输出16进制的int类型,字母以小写输出%X输出16进制的int类型,字母以大写输出%u输出一个10进制的无符号数//定义变量a,以10进制方式赋值为123 int b = 0567;//定义变量b,以8进制方式赋值为0567 int c = 0xabc;//定义变量c,以16进制方式赋值为0xabc printf("a = %d\n" , a);原创 2022-10-31 22:49:19 · 2494 阅读 · 0 评论 -
C语言学习之路(基础篇)—— 数据类型(上)
程序运行中可以被改变的量,存在于内存中变量在使用前必须先定义,定义变量前必须有相应的数据类型声明变量不需要建立存储空间,如:extern int a;定义变量需要建立存储空间,如:int b;//extern 关键字只做声明,不能做任何定义 //声明一个变量a,a在这里没有建立存储空间 extern int a;a = 10;//err, 没有空间,就不可以赋值 int b = 20;//定义一个变量b,b的类型为int,b赋值为20 return 0;}运行程序,提示错误:“原创 2022-10-29 11:44:23 · 1948 阅读 · 0 评论 -
C语言学习之路(工具篇)—— Qt Creator的使用
以上提示“error: ‘./ui_mainwindow.h’ file not found”,清除后重新构建(如果不行),则就重开项目,博主重开项目后就没报not found了,补充下对项目cmake一下也可以解决。安装完成后运行Qt Creator程序,如下图所示,可以看到该版本下的很多示例和教程(YouTube播放,全英文)工具——获取工具和功能,查看已安装的工具和功能,这里博主需要安装MFC工具,勾选——修改即可。原创 2022-10-24 10:39:05 · 3373 阅读 · 2 评论 -
C语言学习之路(工具篇)—— Visual Studio的使用
头文件展开: #include 包含文件stdio.h(预处理时将stdio.h 文件拷贝至预处理文件中)C语言写的程序是需要依赖各种库的,所以编译之后还需要把库链接到最终的可执行程序中去。条件编译: 条件不成立: #if 0 -> #endif 条件成立 #if 1 -> #endif。宏定义展开、头文件展开、条件编译等,同时将代码中的注释删除,带#的语句就是预处理指令,预处理指令在预处理的时候处理了。,将预处理后文件编译生成汇编文件。源文件—添加—新建项。原创 2022-10-23 20:51:12 · 9955 阅读 · 4 评论