笔记
rodin-luodan
虚心涵泳,切已体察。
展开
-
QT之实现圆角边框无锯齿
[图片]这个应该算比较完美的了参考了这个帖子:http://www.cppblog.com/biao/archive/2011/10/12/158175.html原创 2020-07-19 14:55:43 · 1799 阅读 · 0 评论 -
算术基本定理的证明
以下来源于百度搜索:算术基本定理的最早证明是由欧几里得给出的。而以下是用现代的陈述方式去证明。 待证命题:大于1的自然数必可写成质数的乘积。用反证法:假设存在大于1的自然数不能写成质数的乘积,把最小的那个称为n。非零自然数可以根据其可除性(是否能表示成两个不是自身的自然数的乘积)分成3类:质数、合数和1。首先,按照定义,n大于1。其次,n不是质数,因为质数p可以写成质数乘积:p=p,这与假设不相符合。因此n只能是合数,但每个合数都可以分解成两个小于自身而大于1的自然数的积。设其中a和b都是介于1和n之原创 2020-07-19 00:51:40 · 3236 阅读 · 0 评论 -
小数运算转整数运算
#include<stdio.h>int main(){ int b=300; int m=47; for(int a=0;a<30;a++) { int c = b/m; printf("%d\n",c); int k =b%m*10; b=k; } printf("%f",0.03/0.0047); return 0;}一个计算器,符号优先级,正负数,小数转整原创 2020-07-05 08:48:21 · 1567 阅读 · 0 评论 -
汇编:第一天
变量名有三个属性:段基址,偏移量和类型原创 2020-06-25 18:22:35 · 120 阅读 · 0 评论 -
虚继承为什么不会出现浪费内存猜想
一直想不通为什么看人家画内存图都会把虚拟成员放到最后,如何通过虚表确定虚拟变量唯一的呢?大概是在初始化之前编译器已经根据代码分配好了内存,如上,B和C都虚继承于A,也许D继承于B,C,这样D的内存分布图其实已经编译器大致构画好了。a的变量也许不在最下面,反正在一个位置吧;然后从下依次往上是d的变量,c,b,初始化的时候反着来,额b和c对于a的偏移量怎么确定的啊!暂且还是放在最下面吧公共变量,反正B,C在D中有个先后顺序,于是对于编译器在生成内存时,遇到vtural继承,比如B中有一个intC,中有一个.原创 2020-06-25 08:43:08 · 150 阅读 · 0 评论 -
虚析构函数与虚表
这是因为 virtual 析构就会占用两个槽位,第一个是 virtual function 本身,另一个是 virtual function thunk,包含了 delete 的过程,以及一些这里用不到的东西。研究这种东西建议从汇编层面研究,推荐《c++反汇编与逆向技术分析》一书~~~~~我是一个勤劳的搬运工...原创 2020-06-24 07:54:34 · 241 阅读 · 0 评论 -
C++:每日一记
子类对象赋值给父类不会有问题,大概是因为子类包含了父类,复制的时候也只会把父类的复制给父类,父类仍然访问不到子类的成员。 父类赋值给子类,这是不允许的,因为子类比父类大,子类除了父类的东西还有自己的。如果赋值成功,那么此时的子类只有父类的东西?而子类自己的东西呢?那就没有了,所以是不允许的。 纯属猜测。。...原创 2020-06-22 22:39:09 · 101 阅读 · 0 评论 -
C++:静态成员函数
静态成员函数:既然普通成员函数也可以访问声明静态变量,为什么还要有静态成员函数呢?普通成员函数需要通过创建一个对象才可以使用。而静态成员函数可以直接通过类名访问,不需要创建对象。...原创 2020-06-22 07:47:19 · 125 阅读 · 0 评论 -
每日一记:变量的作用域范围
#include <stdio.h>int main(){char *s =“abcdfe”;char *x =s;while(*x++);printf("%d\n",x-s-1);return 0;} 这个可以求字符串的长度,我一度认为跳出循环后,x就不会++了,但是想到x是在main函数里面的,所有x在此作用域还是有效的会判断后再自加,如果用++i就不用减1了,比第一个字符大多少正好包含了\0,加上了第一个字符就是字符串的长度。...原创 2020-06-12 07:27:29 · 144 阅读 · 0 评论 -
递归调用内幕 又不理解了 又看了下 其实就是函数返回值 位置问题
void up_and_down(int);int main(void){up_and_down(1);return 0;}void up_and_down(int n){printf(“level %d: n loacation %p\n”, n, &n);/1/if (n < 4)up_and_down(n + 1);printf(“level %d: n...原创 2020-04-22 12:09:23 · 346 阅读 · 1 评论 -
单向链表 尾插法
#include <stdio.h>#include <stdlib.h> //malloc函数头文件//1设计节点(放置数据和指针)不同数据用结构体//结构体模板struct node{//结构体内容int data;struct node* next; //指向下一个节点 ,下一个节点类型为结构体,所以指针类型为struct ...原创 2020-04-21 13:52:37 · 273 阅读 · 0 评论 -
定义字符串的方式区别
请读程序段:char str[]=“ABCD”,p=str;printf(”%d\n”,(p+4));程序段的输出结果是____B_____。A)68 B)0C)字符‘D’的地址 D)不确定的值这样定义呢char str[] = {‘A’,‘B’,‘C’,‘D’};这样定义str[4]的值不确定。...原创 2020-04-20 11:09:47 · 186 阅读 · 0 评论 -
printf函数的实现机制
应该用pfut输出吧,考虑%d,%c,%f都转成字符串输出,需要用到浮点数转字符串函数,最后遇到\n再换行原创 2020-04-19 16:55:16 · 331 阅读 · 0 评论 -
数组指针类型
int a[2][3]={{1,2,3},{4,5,6}};&a int(*)[2][3]型 &a+1a int( *)[3]型 a+1*a int *型 *a+1 *(a+1)原创 2020-04-20 01:45:30 · 96 阅读 · 0 评论 -
C语言多级指针与数组指针
数组指针即为首先是一个指针,然后他指向指向数组,于是有了多维数组指针的概念该指针指向一个多维数组,指针类型有int型:指向每一个元素,int()[]型指向一维数组,int()[][]型指向二维数组,意思是涵盖整个二维数组。我学了多级指针后学多维数组,以为多维数组是有多级指针构成的,于是有了int型,int型,int*型,然后我发现他们地址根本不搭边不会相同。原来这是多级指针,并不是多级数组...原创 2020-04-19 10:35:39 · 287 阅读 · 0 评论 -
scanf printf
输入的字符串都在标准输入缓存中,为了避免回车键的干扰,可以在scanf前面加上fflush(stdin); 来清除标准输入的缓存。在每个最后不带\n的printf后面加fflush(stdout);在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin);另外请检查scanf的返回值...原创 2020-04-12 08:01:09 · 94 阅读 · 0 评论