随笔分类 - C/C++
摘要:对于错误提示:dlgdata.cpp断言错误的解决方法。line:308首先可以肯定的是一定是控件那出了问题,我的事RadioButton那出错了。原因是没有没有分组,导致两个Radio不在一组,从而出现错误。解决办法是:选中第一个Radio,---->属性------>Group打上勾,从新编译,没有错误了,解决!
阅读全文
摘要:1.DDX_Control代码作用?DDX_Control是将控件ID与类的成员变量匹配起来,来完成数据交换,当定义一个控件变量时,MFC会自动为你增加DoDataExchange这个函数是用来完成数据变换,还包括DDX_TEXTeg:voidCAsTestToolsDlg::DoDataExchange(CDataExchange*pDX){CDialog::DoDataExchange(pDX);DDX_Control(pDX,IDC_MAINTREE,m_Treemain);//IDC_MAINTREE是树控件的ID,m_Treemain是树控件对应类的对象}简单的说,就是把控件变量(m
阅读全文
摘要:首先说一下,c的缺陷不是在批判c语言的,只是要提醒c中的陷阱,对于如何成为一个c语言高手很有作用的。先来谈谈关键字吧!1.const它的作用是什么?我们可以把它理解为‘只读’的普通的变量。在现在的编程中,这个关键字我用的还是比较少的,但是看那些高手写的文章里,这个关键字有时可以成为重点的,常用的地方有,函数的传递参数,当然这个参数是不想被改变的参数,这样可以使用它。还有一点就是,常指针 const int *a ;与 int *const a;有什么区别?前者是指针指向的变量时只读的,不可改变的;后者是指针是不可变的,指针的指向的变量时可以变的;当然还有指针和指向的变量都是不可以改变的,写出来
阅读全文
摘要:高位数据赋值低位,比如 int型数据赋值 char型数据,既16位赋值8位,取其低八位赋值,高位数据丢失。计算机是用二进制表示数的,存储的位长有限,只能截掉,所以误差就产生了。所以在一些要求四舍五入严格精度的场合,最好把浮点数转换为整数来计算,否则可能在某些特殊的情况下产生意外的计算错误
阅读全文
摘要:char *ptr;if ((ptr = (char *)malloc(0)) == NULL) puts( "Got a null pointer "); else puts( "Got a valid pointer "); 上面程序在VC6.0下输出结果是:Got a valid pointer 请问指针为NULL时指向哪里,分配的空间为0时又指向哪里?当使用malloc后,只有在没有足够内存的情况下会返回NULL,或是出现异常报告。 malloc(0),系统就已经帮你准备好了堆中的使用起始地址(不会为NULL)。但是你不能对该地址进行写操作(不是
阅读全文
摘要:嵌入式如果用int关键字才是真正不懂嵌入式,如果想做到软件可以移植,应该将类型给定义清晰,如 typedef unsigned char INT8U; typedef signed char INT8S;编码时使用INT8U去定义数据类型。明知道int在不同的机器上可能有不同的字长,还使用int,自找苦吃。unsigned int compzero = 0xFFFF;意图是想让compzero 全是二进制1,但是 0xFFFF是代表程序员认为int 是2个字节的,在两个字节的机器上这样可以要是4字节呢?系统就自动变成相当于unsigned int compzero = 0x0000FFFF;.
阅读全文
摘要:无穷大的数据相乘,计算机语言中超出了类型的范围,该如何计算?以下为一个大数乘上一个0~9之间的数据,算法实现如下:#include<stdio.h>#include<stdlib.h>#include<math.h>#include<string.h>void Mult(char c[],char t[],int m)//c[]大数,m为不超过10的整数 { int i,l,k,flag,add=0; char s[100]; l=strlen(c); for (i=0;i<l;i++) s[l-i-1]=c[i]-'0';
阅读全文
摘要:在C和C++语言开发中,指针、内存一直是学习的重点。因为C语言作为一种偏底层的中低级语言,提供了大量的内存直接操作的方法,这一方面使程序的灵活度最大化,同时也为bug埋下很多隐患。基于对硬件的编程,直接操作寄存器,c语言更是利器,没有了汇编的枯燥繁琐,使得程序简洁易懂。因此,无论如何,我们都要对内存有一个清晰的理解。 一、对内的分配 32位操作系统支持4GB内存的连续访问,但通常把内存分为两个2GB的空间,每个进程在运行时最大可以使用2GB的私有内存(0x00000000—0x7FFFFFFF)。即理论上支持如下的大数组:char szBuffer[2*1024*1024*1024]; ...
阅读全文
摘要:非本人作也!因非常经典,所以收归旗下,与众人阅之!原作者不祥!一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序
阅读全文

浙公网安备 33010602011771号