自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C语言看图说话-组件化技术分类

浪费空间和资源,因为所有相关的目标文件与牵涉到的函数库被链接合成一个可执行文件,当很多程序都用到相同的静态库时,静态库会在内存中拷贝多份,假如静态库占1M,2000个使用他的程序,那么在内存中就有2000个相同的静态库占用了2000M,造成空间的浪费。lib更新了,所有使用它的应用程序都需要重新编译,发布给用户(对于玩家来说,只是一个很小的改动,却导致整个程序重新下载,全部更新)。优点:不同的应用程序如果调用相同的库,那么在内存里只需要有一份该共享库的出现,规避了空间浪费问题。答:成熟的,可以复用的代码。

2024-07-29 13:21:09 215

原创 C语言看图说话-文件复制原理

1.如何创建目标文件?答:定义函数 FILE * fopen(const char * path,const char * mode);函数说明 参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。fopen时如果目标文件不存在,会创建一个目标文件,如果存在,会覆写原来的文件。2.buffer数组的作用?答:起中间缓冲区的作用。3.fread函数的返回值是什么?

2024-07-29 12:54:38 327

原创 C语言看图说话-文件处理模型

答fopen函数在内存中开辟一个文件处理缓存区,我们可以定义一个文件类型的指针来指向缓存区,通过对缓存区的操作实现对内存中文件的读写和修改,我们可以通过fopen函数打开文件流,把一个文件和此流相连接,给此流返回一个指针,使用完再通过fclose函数关闭文件流。文本文件:先对数据进行编码(ASCII,UTF-8,...)再进行存储。答:内存存储是临时存储,速度较快但存储容量较小。外存存储属于长期存储,存储速度较慢但容量较大。答:文件存储类别包括-二进制文件和文本文件。1.内存存储与外存存储的差异是什么?

2024-07-29 12:28:52 134

原创 C语言看图说话-链式存储与顺序存储

答:链式存储又称为链表,用一组任意存储单元存储线性表在的数据元素,包括数据域和指针域,数据域存数据,指针域指示其后续的信息。他的优点是插入和删除很方便,只需要修改数据相邻节点的指向即可,缺点是查询代价较高,在查询任一元素时都需要从头节点开始遍历。答:顺序存储就是把线性表中的所有元素按照某种逻辑顺序,依次存储到从指定位置开始的一块连续的存储空间,比如我们学过的数组就是顺序存储。优点是可以快速的查找出表中任意位置的元素,缺点是插入和删除操作中需要移动大量的元素,效率很低。3.什么是链式存储及优缺点?

2024-07-27 18:21:46 172

原创 C语言看图说话-结构体/联合体

答:结构体,联合体,数组,enum枚举类型答:struct可以存储多个类型成员,且不重叠可以同时存在空间大小是所有成员对齐补齐后的大小,union他的空间大小是最大成员的空间大小(经过补齐后),一次只能给一个成员赋值,给别的成员赋值时会覆盖前一个答先找到占空间最多的那个变量,按他对齐补齐node1的大小是8,按最大的int进行对齐补齐,char占一个字节剩三个字节,short占两个就放在char的后面剩余一个没有成员再能放入开始下一个4个字节,int占4个字节最终得到的结果是8。

2024-07-24 00:08:46 294

原创 C语言看图说话-字符在屏幕上的显示原理

char str[]="abc"首先会在常数区创建一个字符串常量”abc","abc"代表的是字符串常量在常数区的地址,再将字符串常量拷贝进栈区的str字符数组sizeof(str)得到是数组空间大小。答:char str[]=”abc“时,首先会在常数区创建一个字符串常量”abc“,”abc“代表的是字符串常量在常数区的地址,再将字符串常量拷贝进栈区的str字符数组。4.char str[]="abc"与char *str="abc"的区别?

2024-07-23 22:32:27 140

原创 C语言看图说话-宏define

宏的嵌套定义:宏套宏");4.宏定义类型与typedef定义类型的区别?宏定义类型只是简单的文本替换typedef是对类型的重命名//只有m1是int*,m2,m3是int//只有m1是int*,m2,m3是int//全部为int*类型这里 D_P_INT 替换的是 int* 所以第二行与第一行效果相同,而typedef是对类型的重命名所以第三行定义的所有变量都是int*.

2024-07-23 19:30:35 158

原创 C语言看图说话-extern

当extern修饰一个变量或函数时,就是在声明这个变量(函数),告诉编译器在外部文件中已经有这个变量(函数),要通过编译。extern是c语言的一个关键字,可以用来修饰函数与变量。答:1.在一个文件中引用其他文件的变量。2.在一个文件中引用其他文件的函数。

2024-07-23 19:11:52 127

原创 C语言看图说话-static变量

全局静态变量作用域只在定义它的一个源文件内,其他源文件不能使用它。生命周期也是整个程序同在的,从程序开始到结束一直起作用。作用域只在定义它的函数内可见,出了该函数就不可见了。生命周期是其第一次初始化后就一直存在直到程序结束。答:static变量所在内存区是全局/静态区。答:函数 当前文件 整个项目。

2024-07-23 18:54:13 190

原创 c语言看图说话-全局/局部变量生命周期与作用域

答:全局变量定义位置在 全局/静态区 全局静态变量定义位置在全局/静态区局部变量定义位置在栈区 局部静态变量定义位置在全局/静态区。

2024-07-23 17:45:05 186

原创 c语言看图说话-const

答:const是C/C++中的一个关键字,用于修饰变量。当一个变量被const修饰,这个变量就被赋上了只读属性,该变量里的数据只能被访问。但是可以通过指针间接修改,const int a=10,int*p=&a,*p=9;指向和指向的内容都不可改变。被const关键字修饰的形参的值在函数内部不能被改变。const可以修饰函数返回值,使之不能被改变。3.const修饰指针变量的三种方式?2.const修饰变量的注意事项?

2024-07-23 16:50:31 201

原创 C语言看图说话-typedef类型

这里的INT INTEGER integer 代表的都是int。2.typedef定义数组指针与函数指针的方式?3.typedef的嵌套定义指什么?1.typedef的基本用法?typedef还有个用处就是。答:起别名 类型的再定义。这样可以增强代码可读性。

2024-07-23 16:21:33 196

原创 C语言看图说话-枚举类型

答:当需要的值只有有限个数的少量几种时,比如:春夏秋冬,周一到周日,一月到十二月,上下左右,这个时候如果写1代表春,2代表夏,3代表秋,4代表冬,在代码中让人感觉到莫名其妙,大大降低代码的可读性,这种数字也被称为死亡数字,使用枚举类型给他们取一个别名就会好很多。答:枚举类型变量的值可以是整数,枚举类型变量的本质就是整数只不过给它起了别名,如上面代码,’上‘的本质是整数0,enum枚举类型定义时,如果不指定整数,默认从0开始递增。答:enum FANGXIANG{上,下,左,右};2.定义枚举类型的格式?

2024-07-23 14:13:35 190

原创 C语言看图说话-函数的执行原理

所以如果有指针也可以指向代码区的函数,就可以通过函数指针找到函数在代码区的位置,并根据给的参数,进行函数的调用,通过函数指针调用函数两种方式 显示方式 隐式方式。2.在函数内部定义(如在函数里面定义的变量)答:函数在执行过程中声明的变量,函数的形参,存放在栈区,函数执行结束后自动回收。答:函数调用:把函数压入函数调用栈,函数执行结束,从函数调用栈中pop弹出。函数存放在代码区,函数名字指向代码区函数的一个地址。答:函数使用前需要有前置声明,这个声明的意义就是告诉程序函数的地址。1.函数执行的基本过程?

2024-07-22 21:58:36 160

原创 C语言看图说话-堆区与栈区的区别

答:从空间大小来看,堆区的空间较大,栈区的空间较小。从分配效率来看,栈区是在调用函数的时候直接自动分配出来的;而堆区是要执行malloc和calloc时分配的,也就是相当于手动分配,所以栈区的效率更高。答:会产生碎片,在堆积到一定程度时可能会导致程序崩溃,所以我们通常会在栈区创建一个指针,来指向堆区中内容的地址。答:内存区域通常分为5大区域,分别是存储函数的代码区,存储不变常量的常数区,存储全局变量和静态static变量的全局/静态区,还有堆区和栈区。通常来讲,代码区是低地址的,栈区是高地址的。

2024-07-22 19:42:23 99

原创 C语言看图说话-函数在源代码中的三种状态

答:首先需要有返回值类型,然后加上函数名和括号,括号中写上要定义的形参,再加上{},最后再{}中写入流程结构。答:在自定义函数时,最佳的顺序就是先对我们设计好的函数进行声明,然后将调用函数写图程序中,看逻辑是否正确,最后按照我们的需求对函数进行定义,书写函数的流程结构。

2024-07-22 18:50:41 202

原创 C语言看图说话-大小端存储

答:小端存储就是低字节存储在低地址。如:9;小端存储:09 00 00 00应用:内存存储。答:大端存储就是高字节存储在高地址。如:9;大端存储:00 00 00 09应用:网络传输。

2024-07-22 18:17:53 147

原创 C语言看图说话-二维数组.名.特性

如果访问三维数组中某一成员的空间,那么就是三层嵌套,第一层先利用数组名加偏移找到某一个平面的地址,对他*操作后得到这个平面的空间,在利用这个空间加偏移找到这个平面中某一行的地址,*操作后得到这行的空间,最后利用得到的这个行空间加偏移找到某一个成员的地址,对整体*操作后就可以得到这个三维数组中某个成员的空间。答:二维数组名+1是二维数组中的行偏移,找到的是后面一行的地址,而&二维数组名+1属于是二维数组的偏移,找到的是二维数组后面的地址。3.二维数组名+1与&二维数组名+1的区别?答:代表第0行的地址。

2024-07-21 21:48:53 113

原创 C语言看图说话-一维数组.名.特性

答:数组名+1是在数组中列的移动找到的就是第1列的地址;而&数组名+1属于是数组外的移动,找到的是数组后面的地址。答:是数组整个存储空间的首地址,也是第0个元素的地址。它是一个地址常量,是不可以修改的。答:[]其实就是空间寻找的快捷方式,他的计算过程:*(参考地址+偏移)。3.数组名+1与&数组名+1的区别?4.[]运算符的计算过程是什么?答:长度固定,同类型,有编号。2.数组名的特性包括什么?1.数组的特征包括哪些?

2024-07-21 15:57:37 185

原创 C语言看图说话-数组指针

答:p指向的是数组的地址,也就是取地址符加上数组名,那么*p就是对取地址后的数组名再*操作,因为&与*为互逆操作,所以此时*p就等同于数组名,所以通过数组指针访问数组成员空间时,只要将数组名替换为*p即可。答:在图片中,第一行为基本类型的指针,不能看出,数组指针所指向的空间更大,在看后两行,前边为指针数组,后边为数组指针,因为如果*p不加括号,int就会先与*结合变为int型指针,再通过后边的方括号进行扩展,最终命名为p,而数组指针是int与放括号结合成为数组,再通过*p指向它。答:指针类型的数组。

2024-07-21 14:28:06 165

原创 C语言看图说话-指针数组

答:我们知道,指针就像是钥匙,那么指针数组就是存放多个钥匙的数组。要想访问其成员对应的数据其实很简单,就对那个成员进行*操作即可。例如图中所示,想要访问这个指针数组第三个成员指向的数据,对它进行*操作就可以得到对应的空间l。答:每个成员都是指针变量,存储的就是对应空间的地址。2.指针数组的每个成员存储的是什么?3.如何使用指针数组访问数据?1.指针数组是什么?答:指针类型的数组。

2024-07-21 13:56:58 140

原创 C语言看图说话-指针类型的扩展-多级指针

因为二级指针存放的是数据地址的地址,所以说对其进行*操作可以得到数据的地址,在对他进行*操作即可得到真正的数据。其他的多级指针也是一样,是几级指针就对其进行几次*操作就可以得到真正的数据。答:因为指针变量的内存空间只与操作系统的位数有关。所以如果x86 32操作系统,则指针变量的内存空间为4个字节,如果是x64 64位操作系统,则指针变量的内存空间大小为8个字节。答:指向指针的指针==将指针找到的地址再次进行存储。3.多级指针变量的内存空间大小是多少?2.多级指针如何得到真正的数据?

2024-07-20 20:38:36 87

原创 C语言看图说话-指针变量类型的作用

2.在指针移动时,会根据指针变量的类型不同,移动的步伐不同,如果是int类型指针,在移动一个单位时会移动4个字节;如果是short类型指针就会移动2个字节,如果是char类型就会移动1个字节.因为字节是最小的存储单位,所以每个字节有自己的地址编号,在区地址时,取的是变量所占字节的最小地址编号,也就是首地址。答:指针变量的内存空间大小与操作系统的位数有关。如果是x86 (32位)操作系统,指针的空间大小为4字节,如果是x64 (64位)操作系统,那么指针的空间大小为8字节。答:保留的是指向空间的地址。

2024-07-20 20:26:56 99

原创 C语言看图说话-短路问题

答:在逻辑与运算中,利用有假则假的特点,计算机会对前面的式子进行判定,如果假,那么计算机会判定整个逻辑为假,就不会继续对后面的表达式进行运算和判定了。逻辑或也是一样,如果前面的式子为真,那么不会再进行后续的运算,就像短路一样,所以这种问题称为短路问题。2.逻辑或||的运算特点?1.逻辑与&&的运算特点?答:有假则假,全真则真。答:有真则真,全假则假。3.短路问题指的是什么?

2024-07-20 19:17:25 196

原创 C语言看图说话-基本数据类型

在自动类型转换中,如果计算时的存储方式相同,那么字节少的会向字节多的存储;答:在10进制中,我们都知道-1/2=-0.5,因为计算结果为定点存储,所以会舍去小数,那么结果就为0;在二进制下,先不考虑符号位,让a=1,二进制就是0000 0001,除以2就是向右移动1位前方补0变为0000 0000,最后再将负号补上也可以得到结果为0.因为-1在计算机中的存储数据为1111 1111,且a/2的过程就相当于缩减1位数,就是向右移动一位前方补0变为0111 1111,通过计算可得结果位127.

2024-07-20 19:02:27 90

原创 C语言看图说话-溢出现象

答:有符号的短整型最大值的二进制除符号位为0其他位数都为1,对其进行+1就变为符号位为1其他为都为0,因为符号位为1是负数,并且此时为补码,要还原为原码就是对其取反再+1,先取反变为16个1,不看符号位,他的10进制为32767,再+1就是32768,最后补上符号就是最小值-32768.答:以图中这个短整型为例,-1的二进制存储为16个1,在加1的过程中会不断进位变为17位的二进制1 0000 0000,但短整数只能存储16个二进制位,那么最前面的1就会出现溢出舍弃,称这个现象为溢出现象。

2024-07-20 18:36:47 157

原创 C语言看图说话-字符在屏幕上的显示原理

如果想要将整型的数字变为字符型,那么在数字后+‘0’即可,例如1+‘0’=‘1',反之对字符型的数字-’0‘可以得到整型数字。答:如果是以影像或者八进制,十六进制的方式表达,那么需要在常量边上加上单引号‘’,如果是以十进制表达,那就直接写上对应的十进制ASCII码即可。答:例如\n可以进行换行,\t可以自动制表,如果想输出、,那么需要在它的前面再加上一个、。还有许多类似的转义字符,直接查看此表即可。答:字符型的本质是整型,它的字节数为1,属于定点存储,是8位的二进制数。1.字符型的本质、字节数与存储原理?

2024-07-20 18:25:02 178

原创 C语言看图说话-数据类型

在说后缀,因为无符号的后缀为u,所以无符号的int类型后缀为u,正常int类型没有后缀,short类型没有后缀,long类型为l,无符号long类型为ul,long long 类型为ll,无符号long long为ull,char无后缀。浮点型不区分有无符号,float类型为f,double没有后缀,long double为l,但一般用不到这个类型。答:基本数据类型可以分为整型,字符型和浮点型三大类,其中整型包括short,int,long ,long long 4小类;2.不同类型的字节数分别为多少?

2024-07-20 17:03:45 299

原创 C语言看图说话-从源代码到-exe文件

答:在预处理期,就是程序员在编写代码的过程。编译期中编译器将源代码变为汇编语言,汇编语言是计算机语言的助记符号。汇编期中汇编器将汇编语言变为机器语言.obj,也就是计算机能够识别的01指令,机器最终执行的是机器语言.obj,也称为目标文件。答:产生LNK连接错误是在连接期出现了问题,可能是找不到头文件造成的,也可能是写错了卖弄函数,或者在一个项目中没有或者出现多个main函数。答:要经过预处理期,编译期,汇编期,连接期,连接期和执行期。答:语法错误就是出现编译错误,所以是在编译期出现问题。

2024-07-20 16:38:09 155

空空如也

空空如也

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

TA关注的人

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