c语言
SXM19940913sxm
这个作者很懒,什么都没留下…
展开
-
c语言---引用(变量的别名)
引用 即变量的别名int a=10; //变量int &b=a; //引用: 必须在定义的时候初始化,无空引用,并且引用不分等级。 ①从内存上分配看指针变量:需要【分配内存区域】,是间接访问变量,需要自己的内存空间 其指向①可变的(除非用了const)②不一定存在,比如空指针NULL 引用:【不用分配内存区域—引用(别名而已)的地址其实就是被引用对象的地址】必须一开始就指向一个存在的对象(创建时必须初始化,不能为空)从【编译上】看程序在编译时分别将指针和引用添加到符号表上,原创 2020-07-22 18:39:16 · 1767 阅读 · 0 评论 -
c语言---队列(queue)
https://blog.csdn.net/zhang21722668/article/details/82155301原创 2020-07-22 13:03:10 · 369 阅读 · 0 评论 -
C语言---位运算 源码反码补码
习题:void swap_int(int *a,int *b){ *a=*a+*b; *b=*a-*b; *a=*a-*b;}答案:结果正确,即使会溢出原创 2020-07-16 20:14:54 · 363 阅读 · 0 评论 -
c语言---数组
数组数组结束位为’\0’二维数组定义时,一维大小可缺省,但二维大小必须指明确定值;错误使用实例:char b[2][3]={“a”,“b”,“c”}; 错误,只有2行,却定义了3个字符串数组的使用:访问二维数组b的第i行第j列的方式:b[i][j]*(b[i]+j)(*(b+i))[j] 这里*(b+i) == b[i]比较分析int array[3][4];*(array[i]+j)则是第i行中的第j个元素,即array[i][j]*(array+i)是行地址,原创 2020-07-12 21:51:07 · 159 阅读 · 0 评论 -
c语言--取整: 强制类型转换(?)、floor、round、ceil、fix
C语言有以下几种取整方法:1强制类型转换成int。如: int i = 2.5; 或 i = (int) 2.5; 这种方法采用的是舍去小数部分。2、C/C++中的整数除法运算符"/"本身就有取整功能(int / int),而下面介绍的取整函数返回值是double。整数除法对正数的取整是舍去小数部分,但是整数除法对负数的取整结果和使用的C编译器有关。3、floor函数:向下取整4、ceil:向上取整 5、round(x):四舍五入取整(相同时取最大值)...原创 2020-07-22 20:38:37 · 2472 阅读 · 0 评论 -
c语言---转义字符
有转义字符如下:‘\0X41’、’\0x41’、’\X41’、’\x41’、’\a’、’\b’、’\c’、’\r’其中错误的转义字符个数是4个字符集为每个字符分配了唯一的编号,每个字符除了用它本身的实体表示外,还可以用转义字符来表示转义字符以\开始,如果是\x(注意是小写,C语言是区分大小写的)开头,后面接16进制数,如果以\开头,后面接八进制数。转移字符表示的数据范围有限,因此对\x开头的 ,只能是\xxx(后面两位表数据)这种格式的,意思是只能接两位数据,最大值为\x7f对\开头的,后面可以原创 2020-07-22 14:35:56 · 922 阅读 · 0 评论 -
c语言---输入输出函数 printf scanf 及输入输出控制符
printf# include <stdio.h>int printf(const char *format, ...);int printf("输出控制符 非输出控制符",输出参数);printf中的输出控制符%d 按十进制整型数据的实际长度输出。%ld 输出长整型数据。%md m 为指定的输出字段的宽度。如果数据的位数小于 m,则左端补以空格,若大于 m,则按实际位数输出。%u 输出无符号整型(unsigned)。输出无符号整型时也可以用 %d,这时是将无符号转换成原创 2020-07-16 14:22:02 · 463 阅读 · 0 评论 -
c语言---宏
宏1、仅仅替换2、不能定义宏参类型3、不会检查宏参有没有定义定义带参数的宏“#define JH(a,b,t)t=a; a=b; b=t”,对两个参数a、b的值进行交换,下列表述中正确的是( )。原创 2020-07-22 20:20:22 · 473 阅读 · 0 评论 -
c语言/C++---基本数据类型、指针 及其所占内存大小
注意:求数组大小时,如果数组作为参数传递时,退化为指针,所以sizeof(arr)大小为该系统下指针的大小对于C字符串,需要牢记C/C++中一个汉字占两个字节(Linux下3个字节)。求struct 或者 class 的大小时候,除了基本的数据类型大小,特别要考虑的是字节对齐问题,如果是C++的还涉及虚函数的虚表问题,需要加上虚表指针的大小,关于内存对齐的问题在别的博客会详细写。关于数组,数组指针,指针数组稍微提一下:sizeof(数组名)????返回数组大小sizeof(数组指针)????原创 2020-08-29 10:47:28 · 765 阅读 · 1 评论 -
C语言---函数(main,缺省参数用宏替换实现)
函数调用的形式: 函数名(实参1,实参2,实参3 ,… ,实参n)实参可以是具有确定值的常量、变量、表达式、函数等本题中:func(rec1,rec2+rec3,(rec4,rec5)); f(m+n,x+y,f(m+n,z,(x,y)));实参1=rec1 m+n实参2=rec2+rec3 x+y实参3=(rec4,rec5) f(m+n,z,(x,y))故实参个数为3....原创 2020-07-22 14:01:07 · 837 阅读 · 0 评论 -
C语言---运算符:优先级+特性
如果一个表达式中的两个操作数具有相同的优先级,那么它们的结合律(associativity)决定它们的组合方式是从左到右或是从右到左。例如,算术运算符和操作数的组合方式是从左到右,赋值运算符则是从右到左,如表 1 所示。表 2 列出优先级次序下,所有 C 语言运算符的优先级和结合律。表 2 中优先级最高的运算符中的最后一个(类型名称){列表} 是 C99 新增加的。一些运算符记号在表 2 中出现了两次。例如,自增运算符 ++ 和自减运算符 --,在作后缀运算符(如表达式 x++)时,较其用作前缀运原创 2020-07-16 20:41:47 · 219 阅读 · 0 评论 -
C语言---文件操作函数
详解文本文件和二进制文件区别常见硬件设备所对应的文件文件 硬件设备stdin 标准输入文件,一般指键盘;scanf()、getchar() 等函数默认从 stdin 获取输入。stdout 标准输出文件,一般指显示器;printf()、putchar() 等函数默认向 stdout 输出数据。stderr 标准错误文件,一般指显示器;perror() 等函数默认向 stderr 输出数据(后续会讲到)。stdprn 标准打印文件,一般指打印机。常见文件操作函数1、fopenFILE *f原创 2020-07-11 12:56:15 · 114 阅读 · 0 评论 -
C语言---数组&指针在函数中的使用 函数指针
int array[3][4];*(array[i]+j)则是第i行中的第j个元素,即array[i][j]*(array+i)是行地址,等价于array[i]*(*(array+i)+j) *(array+i*4+j)是第 ( 4*i+j ) 行的首元素地址列地址和行地址的偏移不能在一个级别上+...原创 2020-07-11 10:29:06 · 1260 阅读 · 0 评论 -
c语言---调试 编译器内置宏 DEBUG宏
编译器内置宏ANSI C标准中有几个标准预定义宏(也是常用的):__LINE__:在源代码中插入当前源代码行号;__FILE__:在源文件中插入当前源文件名;__DATE__:在源文件中插入当前的编译日期__TIME__:在源文件中插入当前编译时间;__STDC__:当要求程序严格遵循ANSI C标准时该标识被赋值为1;__cplusplus:当编写C++程序时该标识符被定义。DEBUG("FILE: %s, LINE: %d…",__FILE__,__LINE__,…)其实没有必要,原创 2020-06-15 15:46:26 · 715 阅读 · 0 评论 -
c语言---预处理的功能 1: 宏定义 2:文件包含 3:条件编译
预处理功能是C语言特有的功能,它是在对源程序正式编译前由预处理程序完成的。程序员在程序中用预处理命令来调用这些功能。宏定义是用一个标识符来表示一个字符串,这个字符串可以是常量、变量或表达式。在宏调用中将用该字符串代换宏名。宏定义可以带有参数,宏调用时是以实参代换形参。而不是“值传送”。为了避免宏代换时发生错误,宏定义中的字符串应加括号,字符串中出现的形式参数两边也应加括号。...原创 2019-09-17 22:22:58 · 303 阅读 · 0 评论 -
C语言---getmemory指针系列 函数中的传值、传址、引用调用 回调函数
引用:引用是一个变量的另一个名字,又称别名。定义方式:int a=10;int &b=a;在这里,意思就是【给a变量起了一个新名字b】 因此b不可再次被重新定义。引用必须初始化,无空引用,并且引用不分等级。在引用中 int &b=a;这一句代码可被编译器看做int * const b=&a;//加上const的作用是表明指针b的自身的值(a的地...原创 2020-07-22 15:31:42 · 218 阅读 · 0 评论 -
C语言---结构体struct---结构体对齐
声明:struct (可选的结构体名){ 成员列表}(可选的实例化结构体);//struct的声明:告知其结构,但是没有分配、消耗内存创建:struct 结构体名 实例化结构体名称;①声明和实例化后面的;必须:表示结构体声明的结束②如果在函数内声明→作用域仅限函数内部出事化可以只初始化一个成员,也可以任意顺序初始化struct boot gift = { .valu...原创 2020-03-04 22:55:12 · 198 阅读 · 0 评论 -
C语言---指针 & 指针数组偏移 const(C++的常量折叠)
数组指针和指针数组指针数组:储存指针的数组 int *p1[10]数组指针:指向数组的指针 int (*p2)[10]“[]”的优先级比“*”要高int *p1[10];理解为int* p1[10] 【内容是int*的数组p1[10]】 指针数组int (*p2)[10]; 理解为指针*p2→int[10] 指向数组的指针*p2→→数组指针 int ...原创 2020-07-22 14:51:54 · 553 阅读 · 0 评论 -
c语言---位域---对齐
位域:是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不同的对象用一个字节的二进制位域来表示。定义类似于结构体,可以①先定义后说明②同时定义说明③直接说明本质上是结构类型,只是成员按照二进制位分配struct 位域结构名{ 位域列表 };其中位域列表的形式为: 类型说明符 位域名:位域长度例如:...原创 2020-07-22 18:50:27 · 385 阅读 · 0 评论 -
c语言---数据类型转换(换一种规则读取补码)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...原创 2020-07-12 21:36:50 · 449 阅读 · 0 评论 -
c语言---内存各分区+动态内存分配malloc/free和new/delet
存储内容: 数据段(也被称为数据区、静态数据区、静态区):保存自动全局变量和static变量<s/trong>(包括static全局和局部变量)。静态区的内容在整个程序的生命周期内都存在,有编译器在编译的时候分配(数据段(存储全局数据和静态数据)和代码段(可执行的代码/只读常量))。 bss段(又叫ZI(zero initial)段):bss段的特点就是被初始化为0,bss段...原创 2019-09-23 09:17:02 · 199 阅读 · 0 评论 -
c语言---(没有字符串,故以数组实现)字符串:strlen、sizeof、length、size strcpy 和其他函数fopen sprintf memset memcpy
memsetmemcpystrcpymemsetextern void *memset(void *buffer, int c, int count) buffer:指针/数组/内存空间的起点 c:是赋给buffer的值, count:buffer的大小/指定长度①多用于设置为0(清空数组).如:原型是memset(buffer, 0, sizeof(buffer))②...原创 2020-03-04 22:35:47 · 338 阅读 · 0 评论 -
c语言---链表---环 linux相关API
链表基础知识总结https://blog.csdn.net/u012531536/article/details/80170893//定义了链表的结构类型typedef struct LinkList ...原创 2020-07-22 16:21:12 · 131 阅读 · 0 评论 -
c语言---进制---前缀、后缀
源码反码补码转换强制类型转换=换一种解读方式3个对齐原则(结构体起始地址,内部成员起始地址,结构体总大小)传参方式:传值调用+传址调用(引用传递&x+指针传递*p)不同进制的前后缀原创 2020-03-05 00:20:17 · 603 阅读 · 0 评论