- 博客(20)
- 收藏
- 关注
原创 外部关键字
extern:用在全局变量或函数的声明前,此处要注意变量有全局和局部之分,而函数无(函数内也不能再嵌套函数)。static : 1,在局部中时的数据延长使用,在.data区。2,在全局区,该static的可见性只在本文件下有效,且该部分只在当前文件下有效。其他无效,在.data区。3,函数前加static,该函数只有当前文件可用,其他文件仍然不可调用。即便有externcons:无论写在类型前还是类型后意义等价,const和类型结合;拿const修饰必须给予初始化。“*”:int *p..
2020-09-15 16:51:26 1994
原创 可见性和生存期
可见性指的是编译和链接过程;1>作用域都在函数体内(凡是在函数内定义叫局部变量)2>定义处到整个源文件结束(凡是在函数外定义的标量叫全部变量)生存期(生命期)指的是程序的执行过程;其余后期补充...
2020-09-10 15:00:27 117
原创 2020-09-02
格式声明:由“%”和格式字符组成,如%d:ch;%d:int;%f:float %c;用来是输出一个字符即对应得ascall值;数据需要和类型关联起来#define宏定义:一般在主函数之外(主函数之上)无类型不开辟空间;可以形成自注释定义常量:const定义常量;枚举定义常量(go语言);宏定义常量;转义字符的特性:1,规定的字符转换成其他意义 如n =》\n; a =》\a;2,把字符的定界符转换成字符 如‘ =》 \’;3,自身的转换,把转义字符转换成转换字符; \ =》 \;循环语句:
2020-09-02 19:08:46 79
原创 2020-09-01
三大总线:数据总线(从内存取数据),地址总线(找到内存的地址进入到cpu内部),控制总线(从上位机传出的信号)。格式的注意:.c/.cpp源文件(文本文件即为ASCII文件) *.h头文件(文本) *.i预编译文件(文本) *.s汇编文件 .o/.obj二进制目标文件 .exe 可执行文件文件的分类:可执行文件和不可执行文件windows系统中:.exe *.bat *.com都为可执行文件,由指令和数据构成。Linux靠文件属性来判断。不可执行文件:其
2020-09-01 17:24:51 94
原创 2020-07-08
Linux: 1,Linux系统的基础使用;2,操作系统原理———多进程&多线程编程;3,计算机网络————1)网络基础 TCP/IP 2)网络编程;安装Vmwarewindows上的一个应用程序————虚拟出一台物理(PC机),在虚拟机下安装系统;虚拟机的安装位置要求:1)不能和虚拟机软件(Vmware)放在同一个文件夹下;2)路径必须是纯英文,不能加汉字;3)选择的磁盘至少有20G的空余空间;在这里插入图片描述Linux特性: 多用户的操作系统;安装时:root用户 超
2020-07-08 14:55:04 155
原创 2020-07-07
函数指针的有无括号问题z=(*(int(*)(int,int)a)(x,y);//等价于z=(*void(*())0)();如上需要注意几个关键点:1,0地址当作了函数的开始位置;2,()表示指针,并且函数指针加括号是调用;3,而void(())表示函数,参数为NULL;4,(void(())0)中类型加括号代表强转;5,对于最后的()实际上代表无函数;...
2020-07-07 09:18:47 106
原创 2020-07-07
区分各定义的形式:int fun(int a);//函数声明int fun(int a)//函数定义//Add_Int;与&Add_Int;等价表示函数地址fun;//地址表示相当于指针fun();//函数的调用
2020-07-07 08:57:49 96
原创 2020-06-17
假设每一个量都是连续的,讨论一级指针和二级指针的一些问题。由图片可知s事二级指针,而二级指针存放一级指针的地址,一级指针存放变量的地址。此处讨论s+1,*s+1和**s+1,各自代表什么意思?(在思考该问题前需要考虑到指针的类型和+1到底是地址还是数值+1.)解答:s+1:p1的地址增加了4;*s+1:a1的地址增加了4;**s+1:a0的数值增加了1.如果此处将int类型换double类型,同理将为481.(在win32系统中指针为4字节)...
2020-06-17 16:37:22 123
原创 2020-06-10
一,在Window系统中关于C语言编译链接的描述:1,.c 和 .h 文件是文本文件。2,预编译生成的文件后缀名为 .i。3,编译生成的文件后缀名为 .obj 。4,链接生成的文件后缀名为 .exe。 二,char:1字节 short:2字节 int:4字节 long:4字节 float:4字节 double:8字节 longlong:8字节三,关于C语言常量的描述:1,用#define 定义的宏常量,在预编译时被替换。2,枚举常量只能是int 类型。3,用const 关键字修饰的变量,称为常变量,只可
2020-06-10 11:24:38 202
原创 2020-06-06
数组下标从0的开始而不是从1开始?数组(Array)是一种线性表数据结构,用一组连续的内存空间,存储一组相同类型的数据线性表,每个线性表上最多有前后两个方向。下面我们大概总结几点:(1)历史原因方面由于语言出现顺序从早到晚C、Java。C语言数组下标是从0开始->Java也是,降低额外的学习和理解成本。(2)减少CPU指令运算方面:1>:数组寻址-----arr[i] = base_address + i * type_size(1)其中base_address为数组arr首地址,a
2020-06-06 15:46:07 144
原创 2020-05-29
根据年和月获得这一年这个月有多少天?首先这个问题需要考虑闰年与否,二月天数与其有关。闰年的判断依据:若某年能被4整除但不能被100整除,则这一年是闰年;若某年能被400整除,则这一年也是闰年。程序如下:#include<stdio.h>int main(){int m,y;int days[12]={31,28,31,30,31,30,31,31,30,31,30,31};scanf(“%d%d”,&y,&m);if(m2){if(y%4000丨丨(y%4==
2020-05-29 09:55:39 259
原创 2020-05-25
结构体之间如何互相赋值?结构体变量是可以直接赋值的。定义结构体类型,然后用这个类型定义出来的变量就是结构体变量。同类型的话,比如:struct test a,b;a=b;//这样可以的。如果是不同的类型,但是结构体没数据类型一专样就要用memcpy拷贝内存属(头文件string.h)。比如:struct test1 a;...
2020-05-25 14:19:27 90
原创 2020-5-24
cpu内部通用寄存器eax,ebx,ecx,edx的使用规则?在寄存器部分有一般寄存器:AX,BX,CX,DXAX:累加寄存器BX:基底暂存器CX:计数暂存器DX:资料暂存器而eax,ebx,ecx,edx是AX,BX,CX,DX的延伸,都是汇编语言中cpu上的通用寄存32位寄存器。此处讨论ebx和edx。ebx:基地址寄存器,在内存寻址时存放地址。edx:总是被用来放整数除法产生的余数。...
2020-05-24 09:44:57 222
原创 2020-05-19
const常量和宏定义的常量的比较?①const常量有数据类型,而宏定义没有。编译器可以对前者进行类型安全检查,对后者只有字符替换,无类型安全检查。②const可被调试工具调试,宏定义的常量不能。宏定义作为标识符会告诉你谁好,即形成自注释。const常量可修饰局部变量也可修饰一切变量。无const时即可读也可写。...
2020-05-19 15:37:09 103
原创 2020-05-19
对于在scanf输入时如何输入double要注意点?由于scanf在读%f时是按照4个字节读也就是一个float所在的位置。而double有8个字节,显然在这个地方是有差池的,数据的符号位,尾数就全错了。所以在读scanf时要想读double应该读%lf放进double中才不会错位。如下:double a,b;scanf(“%lf,%lf”,&a,&b);...
2020-05-19 15:10:21 258
原创 2020-5-17
2.在c中使用bool文件要引入什么头文件?这个地方需要注意两点:①只有c99才支持bool文件编译器。②头文件包含在#include<stdbool.h>中。即要引入stdbool.h。
2020-05-19 10:36:26 100
原创 2020-5-17
1.每三位二进制是一位八进制和每四位二进制是一位十六进制的原因?关于进制问题大家都已经可以熟练的掌握从二进制到八进制,十六进制的转换。对于八进制而言,每三位二进制中最小的是000b,最大是111b,他们的范围刚好在0-7(总共八位数),所以构成了八进制的一位。而在四位二进制中,他们的范围是0-15(总共16位数),这部分并不是因为2的4次方是16,而是因为二进制最小0000,最大1111,分别对应0和15,刚好和16进制的0-F相对应。...
2020-05-19 10:19:02 170
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人