![](https://img-blog.csdnimg.cn/20190918140145169.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
c/c++
笔记小结
zhoudh*
后端开发
展开
-
逗号运算符
原创 2020-09-10 15:04:10 · 154 阅读 · 0 评论 -
可见性和生存期
可见性指的是编译和链接过程; 1>作用域都在函数体内(凡是在函数内定义叫局部变量) 2>定义处到整个源文件结束(凡是在函数外定义的标量叫全部变量) 生存期(生命期)指的是程序的执行过程; 其余后期补充 ...原创 2020-09-10 15:00:27 · 115 阅读 · 0 评论 -
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 · 73 阅读 · 0 评论 -
2020-09-01
三大总线:数据总线(从内存取数据),地址总线(找到内存的地址进入到cpu内部),控制总线(从上位机传出的信号)。 格式的注意: .c/.cpp源文件(文本文件即为ASCII文件) *.h头文件(文本) *.i预编译文件(文本) *.s汇编文件 .o/.obj二进制目标文件 .exe 可执行文件 文件的分类:可执行文件和不可执行文件 windows系统中:.exe *.bat *.com都为可执行文件,由指令和数据构成。Linux靠文件属性来判断。 不可执行文件:其原创 2020-09-01 17:24:51 · 92 阅读 · 0 评论 -
2020-07-08
Linux: 1,Linux系统的基础使用; 2,操作系统原理———多进程&多线程编程; 3,计算机网络————1)网络基础 TCP/IP 2)网络编程; 安装Vmware windows上的一个应用程序————虚拟出一台物理(PC机),在虚拟机下安装系统; 虚拟机的安装位置要求: 1)不能和虚拟机软件(Vmware)放在同一个文件夹下; 2)路径必须是纯英文,不能加汉字; 3)选择的磁盘至少有20G的空余空间; 在这里插入图片描述 Linux特性: 多用户的操作系统; 安装时:root用户 超原创 2020-07-08 14:55:04 · 154 阅读 · 0 评论 -
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 · 105 阅读 · 0 评论 -
2020-07-07
区分各定义的形式: int fun(int a);//函数声明 int fun(int a)//函数定义 //Add_Int;与&Add_Int;等价表示函数地址 fun;//地址表示相当于指针 fun();//函数的调用原创 2020-07-07 08:57:49 · 94 阅读 · 0 评论 -
2020-06-17
什么时候数组名代表整个数组(大小,类型) 1,sizeof(ar0) 2,&ar0/&ar 除了这两种情况外ar都代表数组首元素原创 2020-06-17 16:44:04 · 420 阅读 · 0 评论 -
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 · 122 阅读 · 0 评论 -
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 · 201 阅读 · 0 评论 -
2020-06-06
如果希望数组是从1开始而不是从0开始? 哨兵位!临界值!原创 2020-06-06 15:48:19 · 127 阅读 · 0 评论 -
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 · 143 阅读 · 0 评论 -
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 · 256 阅读 · 0 评论 -
2020-05-25
结构体之间如何互相赋值? 结构体变量是可以直接赋值的。定义结构体类型,然后用这个类型定义出来的变量就是结构体变量。 同类型的话,比如: struct test a,b; a=b;//这样可以的。 如果是不同的类型,但是结构体没数据类型一专样就要用memcpy拷贝内存属(头文件string.h)。 比如: struct test1 a; ...原创 2020-05-25 14:19:27 · 87 阅读 · 0 评论 -
2020-5-24
cpu内部通用寄存器eax,ebx,ecx,edx的使用规则? 在寄存器部分有一般寄存器:AX,BX,CX,DX AX:累加寄存器 BX:基底暂存器 CX:计数暂存器 DX:资料暂存器 而eax,ebx,ecx,edx是AX,BX,CX,DX的延伸,都是汇编语言中cpu上的通用寄存32位寄存器。此处讨论ebx和edx。 ebx:基地址寄存器,在内存寻址时存放地址。 edx:总是被用来放整数除法产生的余数。 ...原创 2020-05-24 09:44:57 · 218 阅读 · 0 评论 -
2020-05-19
const常量和宏定义的常量的比较? ①const常量有数据类型,而宏定义没有。编译器可以对前者进行类型安全检查,对后者只有字符替换,无类型安全检查。 ②const可被调试工具调试,宏定义的常量不能。 宏定义作为标识符会告诉你谁好,即形成自注释。const常量可修饰局部变量也可修饰一切变量。无const时即可读也可写。 ...原创 2020-05-19 15:37:09 · 102 阅读 · 0 评论 -
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 · 255 阅读 · 0 评论 -
2020-5-17
2.在c中使用bool文件要引入什么头文件? 这个地方需要注意两点:①只有c99才支持bool文件编译器。②头文件包含在#include<stdbool.h>中。即要引入stdbool.h。原创 2020-05-19 10:36:26 · 98 阅读 · 0 评论 -
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 · 165 阅读 · 0 评论