随笔分类 -  C和C++基础

摘要:摘自:https://www.cnblogs.com/yuaqua/archive/2011/10/21/2219856.html 小数点. 后 “*” 表示输出位数,具体的数据来自参数表 printf 格式字符串中,与宽度控制和精度控制有关的常量都可以换成变量,方法就是使用一个 “” 代替那个常量 阅读全文
posted @ 2021-07-15 17:05 不明白就去明白 阅读(363) 评论(0) 推荐(0) 编辑
摘要:const 变量能被其他文件 extern 引用吗?为什么? 先来看一段代码: // 来源:公众号编程珠玑 // main.cc #include<stdio.h> // 引用外部定义的const_int变量 extern const int const_int; int main() { prin 阅读全文
posted @ 2021-07-13 14:52 不明白就去明白 阅读(226) 评论(0) 推荐(0) 编辑
摘要:标准C并没有明确规定枚举类型占用空间的大小,标准中只是说“枚举类型的尺寸是以能够容纳最大枚举子的值的整数的尺寸”,同时标准中也说明了:“枚举类型中的枚举值必须要能够用一个int类型表述”,也就是说,枚举类型的尺寸不能够超过int类型的尺寸,但是是不是必须和int类型具有相同的尺寸呢? 上面的标准已经 阅读全文
posted @ 2021-04-12 14:03 不明白就去明白 阅读(1126) 评论(0) 推荐(0) 编辑
摘要:在左移位中,值最左边的几位被丢弃,右边多出来的几个空位则由0补齐。但是,右移位操作存在一个左移位操作不曾面临的问题:从左边移入的位,可以选择两种方案。一种是逻辑移位,左边移入的位用0填充;一种是算数移位,左边移入的位由原先该值的符号位决定,符号位为1则移入的位均为1,符号位为0则移入的为均为0,这样 阅读全文
posted @ 2021-04-02 17:32 不明白就去明白 阅读(1971) 评论(0) 推荐(0) 编辑
摘要:可重入函数:函数可多线程同时调用,一般是在只有局部变量的函数中 不可重入函数:函数一般情况下不可多线程同时调用,这样的函数中一般有全局、静态变量,而这样就涉及到了变量的保护问题,所以需要加入互斥锁/信号量/中断。 可重入函数: void swap_temp(int* p int* q) { int 阅读全文
posted @ 2021-02-03 14:15 不明白就去明白 阅读(539) 评论(0) 推荐(0) 编辑
摘要:因为一个裸机软定时器的溢出问题, static uint32_t _timer_ticks = 0; void timer_ticks() { _timer_ticks++; } void soft_timer_loop() { struct soft_timer* target; for(targ 阅读全文
posted @ 2020-12-21 13:16 不明白就去明白 阅读(3112) 评论(0) 推荐(0) 编辑
摘要:#include <iostream> using namespace std; int fuc(char *a) { cout << a << endl; } int main() { fuc("hello"); } 如果编译器版本比较高,会提示warning: ISO C++11 does no 阅读全文
posted @ 2020-11-26 15:13 不明白就去明白 阅读(662) 评论(0) 推荐(0) 编辑
摘要:转载自:https://www.cnblogs.com/King-Gentleman/p/5081159.html 原作者:King先生 一、类嵌套的疑问 C++ 头文件重复包含实在是一个令人头痛的问题,假设我们有两个类 A 和 B,分别定义在各自的头文件 A.h 和 B.h 中,但是在 A 中要用 阅读全文
posted @ 2020-10-24 16:17 不明白就去明白 阅读(1540) 评论(0) 推荐(0) 编辑
摘要:拷贝自:https://blog.csdn.net/hazir/article/details/9429017 看到很多C代码的结构体赋值都是用memcpy函数来拷贝,其实根本不需要,用等号直接赋值即可。结构体描述的是的一块连续内存的内存布局,同类型的一个结构体变量给另一个结构体变量赋值,使用等号编 阅读全文
posted @ 2020-10-12 17:46 不明白就去明白 阅读(7971) 评论(0) 推荐(2) 编辑
摘要:/** * rt_container_of - return the member address of ptr, if the type of ptr is the * struct type. */ #define rt_container_of(ptr, type, member) \ ((t 阅读全文
posted @ 2020-10-12 13:42 不明白就去明白 阅读(1404) 评论(0) 推荐(1) 编辑
摘要:三种结构体初始化方法 1 默认无参的构造函数2 结构体自带的默认构造函数 3 带参数的自定义的构造函数 struct node{ int data; string str; char x; node() :x(), str(), data(){} //无参数的构造函数数组初始化时调用 node(in 阅读全文
posted @ 2020-09-18 18:16 不明白就去明白 阅读(2584) 评论(0) 推荐(0) 编辑
摘要:设置结构体的边界对齐为1个字节,也就是所有数据在内du存中是连续存储的。比如你在C语言中定义下面这样的结构体:struct s {char ch;int i;};编译器为了让程序跑得跟快,减少CPU读取数据的指令周期,对结构体的存储进行优化。实际上第一个char型成员虽然本来只有1个字节,但实际上却 阅读全文
posted @ 2020-08-18 15:45 不明白就去明白 阅读(1275) 评论(0) 推荐(0) 编辑
摘要:C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式). C++提供关键字explicit,可以阻止不应该允许的经过转换 阅读全文
posted @ 2017-11-17 11:02 不明白就去明白 阅读(1982) 评论(0) 推荐(0) 编辑
摘要:赋值兼容性原则:子类就是特殊的父类 ①子类对象可以当作父类对象使用,②子类对象可以直接赋值给父类对象,③子类对象可以直接初始化父类对象,④父类指针可以直接指向子类对象,⑤父类引用可以直接引用子类对象。 #include <iostream> using namespace std; class Pa 阅读全文
posted @ 2017-09-22 23:16 不明白就去明白 阅读(325) 评论(0) 推荐(0) 编辑
摘要:操作符重载为操作符提供不同的语义 #include <iostream> using namespace std; struct Complex { int a; int b; }; int main() { Complex c1 = {1,2}; Complex c2 = {3,4}; Compl 阅读全文
posted @ 2017-09-22 16:22 不明白就去明白 阅读(256) 评论(0) 推荐(0) 编辑
摘要:一般而言,所有的对象都需要一个确定的初始状态! C++中的类可以定义与类名相同的特殊成员函数,这种类名相同的成员函数叫做构造函数,构造函数在定义时可以有参数,但是没有任何返回类型的声明(和返回void是两个概念)。 构造函数的调用:一般情况下C++编译器自动调用构造函数 #include <iost 阅读全文
posted @ 2017-09-21 17:00 不明白就去明白 阅读(570) 评论(0) 推荐(0) 编辑
摘要:多态的问题:一个指针可以指向父类对象也可以指向子类对象,通过这个指针调用的重写函数时,究竟是调用父类的函数还是子类的函数。 准则:这个指针如果指向父类对象,就调用父类的函数,否则就调用子类的函数。 1函数重写 1.父类中被重写的函数依然会继承个子类,2.默认情况下子类中重写的函数讲隐藏父类中的函数, 阅读全文
posted @ 2017-09-20 22:57 不明白就去明白 阅读(130) 评论(0) 推荐(0) 编辑
摘要:之前写的程序用到了log2(m)函数,一直没有报错和出错,但是程序考到同事电脑上重新编译,就会出错,通过现象发现是log2(m)用错了,math中只有log和log10函数,前者是以e为底的,要计算log以2为底的算式可以运用换底公式 loga(b) = logc(b)/logc(a) 所以之前的算 阅读全文
posted @ 2017-05-15 10:44 不明白就去明白 阅读(6352) 评论(0) 推荐(0) 编辑
摘要:项目需要打印一串浮点型数字,于是刚好用sprintf函数格式化,然后出现了意想不到的问题,float型数字全是0.00.。而后面的数字也出现错误。网上查找原因,才发现没有遵循AAPCS栈使用规约,看了之后发现之前写程序真是在冒险。 规约规定,栈任何时候都得4字节对齐,在调用入口得8字节对齐。在这个约 阅读全文
posted @ 2017-03-29 10:28 不明白就去明白 阅读(2404) 评论(0) 推荐(0) 编辑
摘要:声明为const的变量,可确保变量的取值在整个生命周期内都固定为初始化值! const指针有三种: First:指针指向的数据为常量,不能修改,但可以修改指针包含的地址,既指针可以指向其他地方。 阅读全文
posted @ 2016-10-09 21:10 不明白就去明白 阅读(246) 评论(0) 推荐(0) 编辑