自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 程序环境和预处理

首先看一下文件发生了什么事,如下:这篇文章主要是讲解翻译环境。程序的翻译环境和执行环境 在ANSI C的任何一种实现中,存在两个不同的环境。 第1种是翻译环境,在这个环境中源代码被转换为可执行的机器指令。 第2种是执行环境,它用于实际执行代码。详解编译+链接组成一个程序的每个源文件通过编译过程分别转换成目标代码(object code)。 每个目标文件由链接器(linker)捆绑在一起,形成一个单一而完整的可执行程序。 链接器同时也会引入标准C函数库中任何被该程

2022-02-15 18:03:23 102 1

原创 文件管理。

什么是文件 磁盘上的文件是文件。 但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件程序文件 包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)数据文件 文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内 容的文件。本次讨论的是数据文件。 在以前各章所处理数据的输入输出都是以终端为对象的,即从终端的键盘输入数据,运行结果显示到显示器上

2022-02-15 12:31:31 184

原创 动态内存分配

为什么存在内存分配?为什么存在内存分配:我们已经掌握的内存开辟方式有:int val = 20;//在栈空间上开辟四个字节char arr[10] = {0};//在栈空间上开辟10个字节的连续空间但是上述的开辟空间的方式有两个特点1. 空间开辟大小是固定的。2. 数组在申明的时候,必须指定数组的长度,它所需要的内存在编译时分配。但是对于空间的需求,不仅仅是上述的情况。有时候我们需要的空间大小在程序运行的时候才能知道,那数组的编译时开辟空间的方式就不能满足了。 这时候就只能试

2022-02-10 20:24:09 113

原创 自定义类型:结构体,枚举,联合

结构体:描述一个学生:struct Stu{ char name[20];//名字 int age;//年龄 char sex[5];//性别 char id[20];//学号};//分号不能丢特殊的声明 //匿名结构体类型struct{ int a; char b; float c; }x;struct{ int a; char b; float c; }a[20], *p;在上面代码的基础上,下面的代码合法吗? p = &x;

2022-02-05 20:35:23 663

原创 字符函数和字符串函数

求字符串长度:strlen 字符串已经 '\0' 作为结束标志,strlen函数返回的是在字符串中 '\0' 前面出现的字符个数(不包含 '\0' )。 参数指向的字符串必须要以 '\0' 结束。 注意函数的返回值为size_t,是无符号的( 易错 ) 学会strlen函数的模拟实现函数的使用:上面两个不同的区别是前一个有‘\0’,strlen函数是去寻找‘\0’,第二个求出来是随机值。strlen函数的模拟实现: 下面采用的是计数器的方法。给出来一个错误示..

2022-02-04 21:50:02 426

原创 指针的进阶

关于指针的一些出错点:传过去的是首元素的地址,不是整个数组。关于指针的打印:可以用数组,也可以用指针来打印,指针会寻找最后一个‘\0’作为结束。第一个解引用打印的是c.后面打印的是abcdef.不能够修改,修改是错误的。有些编译器识别不到错误,比如vs.容易见的错误:解决常量字符串被修改的方法:加const。字符指针 在指针的类型中我们知道有一种指针类型为字符指针 char* ; ...

2022-02-01 12:05:41 631 1

原创 数据的存储

数据类型的介绍:基本的内置类型char //字符数据类型short //短整型int //整形long //长整型long long //更长的整形float //单精度浮点数double //双精度浮点数类型的意义: 1. 使用这个类型开辟内存空间的大小(大小决定了使用范围)。 2. 如何看待内存空间的视角。 整型家族:char unsigned char//0-255...

2022-01-30 12:44:02 464

原创 实用的调试技巧

调试是什么?有多重要? 所有发生的事情都一定有迹可循,如果问心无愧,就不需要掩盖也就没有迹象了,如果问心有 愧,就必然需要掩盖,那就一定会有迹象,迹象越多就越容易顺藤而上,这就是推理的途径。顺 着这条途径顺流而下就是犯罪,逆流而上,就是真相。 调试的基本步骤 发现程序错误的存在 以隔离、消除等方式对错误进行定位 确定错误产生的原因 提出纠正错误的解决办法 对程序错误予以改正,重新测试Debug和Release的介绍。 Debug 通常称为调试版本,它包

2022-01-28 13:08:29 80

原创 结构体的认识

如何定义一个结构体:struct Stu{ char name[20];//名字 int age;//年龄 char sex[5];//性别 char id[20];//学号};//分号不能丢这样就可以简单的定义一个结构体,现在只是定义了一个结构体并没有使用,相当于是图纸,并没有占用空间。结构体的变量定义:两种方式。以下两种方式都可以。struct Point{ int x; int y; }p1; //声明类型的同时定义变量p1struct Point p2; //

2022-01-27 22:16:06 157

原创 指针的入门

什么是指针:指针是个变量,存放内存单元的地址(编号)。总结:指针是用来存放地址的,地址是唯一标示一块地址空间的。 指针的大小在32位平台是4个字节,在64位平台是8个字节。举个例子:可以访问 40个字节。这样就只能访问10个字节,因为是char*类型的指针。指针未初始化就会变成野指针。指针的越界访问:-----------------------------------------------------------...

2022-01-25 16:28:53 599

原创 操作符详解

举个例子:左边打印的是整数,右边因为是2.0,有一个小数,所以最后的结果是小数2.500000.使用取模运算这样就会出错。说明该编译器是算术移位。逻辑右移如下:位操作符:这个方法只能实现正数,负数就不行。通过移位的方式来判定。这个方式的效率比较差,这个方式效率高,但是很难想到。凡是说逻辑什么的,只有0和1.以上两对结果是一致的...

2022-01-24 13:00:09 53

原创 扫雷游戏的实现

首先我们先来捋一下实现的思路:分为三个文件,一个test.c和game.h和game.c。game.h专门用来写函数的声明,game.c用来写函数的代码。test.c是用来测试的。我们来看一下整体流程:这个流程在test.c中实现。(注释的可以先不用管)我们先在test.c之中写。上来我们选择用do,while循环来实现,根据玩家输入的数字,分别进去不同的分支,1开始游戏,0退出游戏。选择其他数字输入错误,但是循环并没有结束,可以重新输入。menu函数就是选择的界面,如下所示:当然还有一

2022-01-23 21:48:42 2447

原创 三子棋游戏的实现

什么是三子棋:就是3x3的格子,玩家和电脑依次下棋,只要满足某一行或者某一列或者对角都是3个一样的,就获胜。首先我们先来捋一下实现的思路:分为三个文件,一个test.c和game.h和game.c。game.h专门用来写函数的声明,game.c用来写函数的代码。test.c是用来测试的。我们来看一下整体流程:(注释的可以先不用管)我们先在test.c之中写。上来我们选择用do,while循环来实现,根据玩家输入的数字,分别进去不同的分支,1开始游戏,0退出游戏。选择其他数字输入错误,但是循环

2022-01-22 19:34:00 1899

原创 经典例题的解法

第一种解法容易造成溢出,第二种解法很完美(按二进制位异或)。先看一个知识点:所以改进的代码:

2022-01-21 17:39:01 60

原创 数组的了解

创建数组和初始化:数组的元素个数里面不可以用变量,但是可以用宏定义,#define n 10,这个时候就可以用n了。字符数字的初始化调试之后的结果如果把arr2中的字符b换成98,得到同样的效果。关于sizeof与strlen的区别:字符串的结束标志是‘\0’,所以是七个元素,strlen遇到‘\0’就停止,所以是六个。sizeof计算的是实际的个数,strlen要去找‘\0’。注意strlen返回的是无符号的整形。打印数组的每一个...

2022-01-21 17:28:31 183

原创 函数的认识

简单定义一个函数:strlen函数:求字符串的长度,遇到‘\0’结束。这个长度就是3.strcopy函数:字符串的拷贝。就是把arr1的4个字符一起拷贝到arr2之中,第五个及其之后都是保持原来的符号不变,但是打印的时候以‘\0’作为结束标志。memset函数:把arr字符串的前5个字符用*号来替代。函数的形式:得到最大值的函数:交换两个数:用函数的话必须用指针。如果不用函数,就在外面交换是可以办到的,但是用函数就不能办到了。指..

2022-01-20 22:29:37 541

原创 循环语句初识

do while循环:如果do里面有好几项,那么必须加中括号。因为当i等于5的时候跳出循环。因为当i等于5的时候,跳过后面的语句,所以i永远得不到增加,永远是5.for循环:计算的是n的阶乘。计算的是1的阶乘加2的阶乘,加到n的阶乘的和。如果ret不等于1的话,那么每次循环,它的值就被累计,所以每一次循环开始的时候就让它等于1.这样计算同样可以达到上面的那种效果,例题:这个算法最坏的情况需要找n次,所以要改进,采用二分法。改进的部分如下:.

2022-01-19 12:13:08 4036

原创 sizeof,宏,静态,操作符

关于sizeof对某些参数求大小,单位是字节,如下:按位取反操作符:原码,反码补码初步了解: 负数在计算机中存储的补码,最高位代表符号位,0为整数,1为负数。正数原码补码和反码都一样。负数要先写出原码,最高位为1,低位补成10进制的大小即可,然后符号位不变,其余位按位取反得到反码,反码再加1得到补码。下面显示了111111---的原码转变为补码的过程,但是打印出来还是打印原码。关于自增和自减:上面的第一个结果为a=11,第二个结果为b=10;a=11,b=11。强制类..

2022-01-18 11:03:38 228

原创 常量,字符串,转义字符。

C语言中的常量分类:字面常量,const修饰的常量,#define定义的标识符常量,枚举常量。int a=20;这就是一个字面常量。const int a=10;a=20;a就是一个常量,不可以被修改。又比如。以上就是一个#define的常量。以上就是一个枚举常量,并且s的赋值只能是括号里面的三个。以上给color赋值6就是错误的。字符串的结束标志:是\0的转义字符。int main(){char arr1[]="bit";cha..

2022-01-17 11:24:51 415

原创 C语言的简介

什么是C语言?C语言是一门计算机语言。计算机语言是什么呢?人和计算机交流的语言。比如C/C++/JAVA/python。语言的发展:开始都是二进制语言。为什么是二进制语言呢。硬件是可以通电的可以产生正电/负电,然后用1和0来表示。比如101010101010代表的二进制序列,可以在手册中查到对应有什么功能,但是这个一般是由科学家来做的。之后的10100001-ADD-助记符-手册,由此产生了B语言。一个序列对应一个比如ADD的助记符,也可以在手册中查到。C语言,早期不成熟,到成熟

2022-01-16 23:23:35 669

原创 来博客了了

大家好,我是小河,今天无意中听朋友谈起CSDN是一个很不错的学习网站。今后我也会经常在博客学习,和大家分享一些C语言的知识点。我的目标是通过这个博客不断丰富和发展我的编程能力和提高C语言的能力。我打算每天在网上找视频来看,并且加上实战,看完之后,自己亲自实践,不会好高骛远。每周花在编程上的时间大约20小时。慢慢积累自己的能力,进入一家互联网公司。争取留在成都这个地方...

2022-01-12 21:30:55 166

空空如也

空空如也

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

TA关注的人

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