C/C++
BugGuys
--你爱我,我爱你,蜜雪冰城甜蜜蜜--
展开
-
sscanf sprintf
void main(){char buf[100] = {0};int num;char c[50];double x;sprintf(buf, "%d %s %lf",12,"nima",3.1595);sscanf(buf,"%d %s %lf",&num,c,&x);printf("%s\n",buf);printf("%d %s %lf",num原创 2017-04-30 20:39:08 · 4910 阅读 · 0 评论 -
7_25 C语言 sizeof计算数组大小以及static讲解和静态库动态库
链式访问:函数的返回值作为另一个函数的参数;头文件定义:#ifndef __ADD_H_ _#define __ADD_H_ _/*``````*/#endif 外部链接属性:其他文件可以找到;内部链接属性:外部链接属性加上static,只能在当前文件使用;局部变量没有链接属性;Static 介绍:static修饰局部变量,改变生命周期,不影响作用域;原创 2017-07-26 15:50:42 · 5609 阅读 · 0 评论 -
8_4 C语言| 函数栈帧分析
函数栈帧分析原创 2017-08-04 22:57:11 · 5009 阅读 · 0 评论 -
7_26C语言|printf用法延伸+函数注释风格
int wid = 显示宽度;int i = 行;int j = 列;printf("%*dx%*d=3%-3d",wid,j,wid,i,i*j);%*d含义:两个参数,一个宽度,一个数值;printf("[%05d]",3);//[00003]%05d含义:占5个位置,未满的补0printf("[%0*d]",5,3);//[00003]函数的注释风格/* 功原创 2017-07-29 13:32:59 · 5109 阅读 · 0 评论 -
7_27C语言|二维数组的sizeof
int a[3][4] = {0}sizeof(a) //48 sizeof(a[0][0]) //4 sizeof(a[0]) //16sizeof(a[0]+1) // 表示a[0][1]地址为4 sizeof(a+1) //4 sizeof(&a[0]+1) //4sizeof(*a) // 16 sizeof(a[3]) // 16 注意:由于sizeof()内部在链接后直行原创 2017-07-29 13:39:36 · 5161 阅读 · 0 评论 -
C++类的相关知识
C中的结构体计算规则:原则1、数据成员对齐规则:结构(struct或联合union)的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小的整数倍开始(比如int在32位机为4字节,则要从4的整数倍地址开始存储)。原则2、结构体作为成员:如果一个结构里有某些结构体成员,则结构体成员要从其内部最大元素大小的整数倍地址开始存储。(struct a里存有str...原创 2018-07-01 22:18:13 · 5004 阅读 · 0 评论 -
C++类的this指针以及const static inline相关内容
关于类中的this指针 1、this指针的类型 类类型* const2、this指针并不是对象本身的一部分,不影响sizeof的结果。3、this的作用域在类成员函数的内部(不严谨)。4、this指针是类成员函数的第一个默认隐含参数,编译器自动维护传递,类编写者不能显式传递。5、只有在类的非静态成员函数中才可以使用this指针,其它任何函数都不可以。对于这段代码class Test{ pu...原创 2018-07-02 13:08:47 · 4893 阅读 · 0 评论 -
C++友元与操作符重载
常规成员函数:1.能访问私有部分;2.位于类作用域中;3.由对象去调用(this指针) 通过将函数声明为static,可以让它只有前两种性质通过将一个函数声明为友元可以使它只具有第一种性质友元函数:友元函数可以直接访问类的私有成员,它是定义在类外部的普通函数,不属于任何类,但需要在类的内部声明,声明时需要加friend关键字。友元函数说明: a、友元函数可访问类的私有成员,但不是类的成员函数; ...原创 2018-07-05 01:01:09 · 5301 阅读 · 0 评论 -
7_24日C语言|整型提升相关介绍
整型提升int main(){char a = 10;char b = 20;char c = a+b;return 0;}分析: char a 和 char b 属于截断; 对于char c = a+b 来说属于整型提升再截断 char a = -1;unsigned char b = -1;printf("%d\n",a);//-1原创 2017-07-26 15:11:30 · 5111 阅读 · 0 评论 -
8_2 C语言|宏和条件编译指令
预定义符号:一般用于做日志记录; __FILE__ 路径 __LINE__行数 __DATE__ 日期__TIME__ 时间 #define 定义符号和宏 (getchar()和 assert()都是宏);宏:类似于函数,把参数替换到文本中称为宏定义,带上足够多的括号,宏不支持递归;printf(“hello world”) 等价于 printf原创 2017-08-03 13:08:52 · 5114 阅读 · 1 评论 -
8_7 C语言 | 探寻可变参数列表
可变参数列表剖析附上一段代码#include <stdarg.h>int aver(int n,...){ int i = 0; int sum = 0; va_list arg; va_start(arg, n); for(i = 0; i<n; i++) { sum += va_arg(arg,int); } v原创 2017-08-07 22:17:16 · 5031 阅读 · 1 评论 -
7月16日|C语言|volatile用法及static用法及printf返回值研究
程序猿心得原创 2017-07-24 10:29:43 · 5031 阅读 · 0 评论 -
7_19|C语言|编程基础要素|获取二进制数位
定义函数:入口参数合法检测,一个入口,一个出口;for:【);获取二进制位数:按位与1,将1《31位,然后每次右移1位;原创 2017-07-24 11:17:43 · 5380 阅读 · 0 评论 -
7_18|C语言|判断浮点数等于0|浮点数的保存形式
程序猿心得原创 2017-07-24 11:11:52 · 5369 阅读 · 0 评论 -
7_20|C语言|随机数的产生|表达式规则
逗号表达式:从左向右依次执行,以最后一次为其值; 表达式值:` for(i = 0; k = 0; i++ ) 其中k=0使其表达式值为0; 字符串数组最后一位为’/0’,strlen不会计算’/0’; 写程序时应将最长循环放在最内层,最短循环放在最外层,避免跨层太多; 当传递数组时,传递的是地址不是整个数组,因此在定义的函数中sizeof(arr)=4;//arr是个指针 ran原创 2017-07-24 11:27:05 · 5119 阅读 · 0 评论 -
7_21|C语言|操作符注意事项|sizeof使用讲解|结构体简单介绍
1.取模操作左右必须为整形; 2.算数右移:右边丢弃,左边补符号位; 逻辑右移:右边丢弃,左边补0; 右移的模式取决于编译器; 3.左移:左边丢弃,右边补0; 对于移位,不能左右移负数,例如a>>-2//error; a^a=0,0^a=a,按位与,或,异或两边操作数是整形; 4.int weight = 120//不算赋值,这是创建变量,定义初值; 5.te原创 2017-07-24 11:46:22 · 4959 阅读 · 0 评论 -
7_22|C语言| 另一种方法打印菱形
在窗口上 因此菱形可以这样输出: int main(void){ int r; printf("r:"); scanf("%d", &r); int y; int x; for (y = 0; y <= 2 * r; y++) { for (x = 0; x <= 2 * r; x++) { if (y<=x+原创 2017-07-24 11:52:19 · 5056 阅读 · 0 评论 -
C语言|构造一个简易编译器检测括号是否正确
int brace, brack, paren;void in_mutli_comment(){ int c = getchar(); int d = getchar(); // *a while (!(c == '*' && d == '/')) { c = d; d = getchar(); }}void in_line_comment(){ int c;原创 2017-07-24 11:55:36 · 5183 阅读 · 0 评论 -
8_1 C语言 | 编译原理
assert在release中被“优化了”,只有在调试中出现,它是宏不是函数;int a =10;int b = 20;const int *p = &a;*p = 0 //error 当*p被const修饰,则不能更改;p = &b;//由于const修饰*p并没有修饰p,则p可更改;const int *const p = &a;//第一个const修饰*p,第二个const修饰p指针原创 2017-08-03 12:49:49 · 5191 阅读 · 0 评论 -
C++动态内存管理
操作系统内存分配与管理 操作系统是运行在系统上的软件。负责进程管理,存储管理,设备管理,文件管理等系统功能。具有并发,共享,随机三个主要特征。然而存储管理的核心是合理分配内存空间。内存是可被处理器直接访问到的,处理器是按照绝对地址访问,但用户程序是按照逻辑地址分配。如何进行内存的管理保证CPU执行指令时正确访问存储空间,就需要有存储管理方案,如分区管理,分页管理,分段管理,段页管理。...原创 2018-07-12 01:23:19 · 4914 阅读 · 2 评论