随笔分类 - C
摘要:VC 6.0常见断言错误总结断言所在函数具体位置意义ASSERT(m_hWnd==NULL)CWnd::Attach()WINCORE.CPP文件中的第320行这个断言通常可能是由于试图把一个已经捆绑(attach)过的窗口捆绑在其他的对象上,只能有一个MFC对象能够捆绑到一个窗口上--不然,消息映射就会不正常ASSERT((dwStyle& WS_POPUP) == 0)CWnd::Create()WINCORE.CPP文件中的第747行起因是由于使用Create()函数时试图赋予WS_POPUP风格没,但是不支持的,想要这种风格应该用CreateEx()函数ASSERT(pMap!
阅读全文
摘要:在ANSI C中,对文件的操作分为两种方式,即流式文件操作和I/O文件操作,下面就分别介绍之。一、流式文件操作 这种方式的文件操作有一个重要的结构FILE,FILE在头文件stdio.h中定义如下:typedef struct { int level; /* fill/empty level of ...
阅读全文
摘要:(转)一、C++编译模式 通常,在一个C++程序中,只包含两类文件——.cpp文件和.h文件。其中,.cpp文件被称作C++源文件,里面放的都是C++的源代码;而.h文件则被称作C++头文件,里面放的也是C++的源代码。C+ +语言支持“分别编译”(separate compilation)。也就是说,一个程序所有的内容,可以分成不同的部分分别放在不同的.cpp文件里。.cpp文件里的东西都是相对独立的,在编译(compile)时不需要与其他文件互通,只需要在编译成目标文件后再与其他的目标文件做一次链接(link)就行了。比如,在文件a.cpp中定义 了一个全局函数“void a() {}”,
阅读全文
摘要:字符串指针与字符数组(转载)选择自 happycock 的 Blog很多刚从C转C++的人都不明白,在C中这样的代码char *pChar="hELLO!"; //定义字符指针pChar,指向一个字符数组首元素即h*pChar='H'; //问题所在行到了C++中怎么就不行了?你翻遍参考书,都会说,pChar指向的是常量,怎么能允许改变呢?你又问了,怎么我在C中运行的好好的?没人回答你。于是,你只好自我安慰,这就是C++的保护机制吧。我来做个总结吧,发现这个问题如果不深入研究一下,总是人云亦云,就像我以前那样。于是,我用BC++3.1编译这段代码后运行,无论
阅读全文
摘要:CString->std::string 例子:CString strMfc=“test“;std::string strStl;strStl=strMfc.GetBuffer(0);std::string->CString 例子:CString strMfc;std::string strStl=“test“;strMfc=strStl.c_str();std::string ->char*例子:string str;char* p;p = str.c_str();
阅读全文
摘要:今天打开自己以前写代码突然觉得在main函数中如果要用的很多自己实现的函数,如果把它们都放在main.cpp文件中太臃肿了。调试起来特别不方便。能不能把这些自己实现的函数放到另外一个文件中呢? 可是又不能把这些函数放在.h文件中。因为书上说.h文件中最好只放结构体、类等的申明,函数实现最好放在.cpp文件中。好吧那我就把这些函数放到一个.cpp文件中吧。所以我就新建了一个2.cpp文件把自己实现的函数都放在里面。然后把这个2.cpp文件放在和main.cpp文件的同目录下。在main.cpp中#include"2.cpp".重新编译运行,一切正常。看似成功了。关掉这个工程后
阅读全文
摘要:/*构造一个带头节点的空链表1.1为单链表的指针、头指针可以标志一个确定的单链表,算法中1前的"&"表示该变量是指针的指针的类型,实现时用*表示*/#include <iostream>using namespace std;/*描述一个单链表*/typedef struct node{ int data; //定义存储整形数据 struct node *next; //定义存储下一个数据位置的指针}node, *linkList;/*首先初始化一个链表*/int Initlist (linkList &a){ if ( (a = (node*)
阅读全文
摘要:模版分为两类:一 、函数模版二 、类 模 版一、函数模版1.1 定义template <class T>T f ( T& a,T& b){}格式:TEMPLATE <CLASS 模版形参名> 函数返回类型 函数名(形参表)1.2 函数调用函数名<模版形参> int a;int b;f(a,b);注意: 函数模版进行实参类型推演。二、 类模版2.1 定义template <class T>class Student{int a;T b;};格式:TEMPLATE <CLASS 模版形参名>CLASS 类名2.2 模版调用
阅读全文
摘要:数组有两个特殊的性质。一是不能复制数组;二是使用数组名字时,数组会自动转化为指向其第一个元素的指针。由于数组不能复制,所以无法编写使用数组类型形参的函数,因为数组会被自动转化为指针。数组形参是个容易出问题的地方。因为对于C/C++新手而言,最大的惊讶是C++中根本不存在所谓的“数组形参”,因为数组在传入时,实质上只传入指向其首元素的指针。1 void average(int ary[12]); // 形参ary是一个int*2 3 //...4 5 int anArray[] = {1, 2, 3}; // 一个具有3个元素的数组6 7 const int anArraySize = siz.
阅读全文
摘要:链表是一种常见的重要的数据结构。它是动态的进行内存分配的一种结构。链表由一个“头指针”变量,图中以head表示,它存放一个地址,该地址指向一个元素。链表中的每一个元素称为“结点”,每个结点都应该包含两个部分:用户需要的实际数据和下一个结点的地址。可以看出,head指向第一个元素;第一个元素又指向第二个元素......直到最后一个元素,该元素不再指向其他元素,它称为“尾表”,它的地址部分放一个"NULL"(表示”空地址“),链表到此结束。可以看到,链表中的各元素在内存中不是连续存放的。要找到某一元素,必须先找到上一个元素,根据它提供的下一个元素地址才能找到下一个元素。如果不提
阅读全文
摘要:数据的基本类型包括:整形(int)、实型(float)、字符型(char)。也介绍了一种构造类型数据——数组.但是数组中的各元素要求属于同一种类型。有时候,仅仅用一种类型是不够的,需要将不同的数据组合成一个有机的整体,以便于引用。我们于是定义了结构体的概念。1 suruct student //student称为结构体类型名2 {3 int num;4 char name[20];5 int age;6 float score;7 char addr[30]8 };注意不要忘记最后的分号。一.定义结构体类型变量的方法(1)先声明结构体类型,再定义变量名struct student stud..
阅读全文
摘要:1.指针常量从字面意思可以看出,指针是一个常量,也就是地址不能被修改。int*—— const p特点是指针指向的数值可以改变,然而指针所保存的地址却不可以改变。#include using namespace std;void main(){int a = 10;int const *p = &a...
阅读全文
摘要:Win32 Application和Win32 Console Application 都是工作在32位Windows环境的程序。其中Win32 Application 就是普通的常见的窗口应用程序,当然有的界面做得比较个性化,比如圆形的、不规则形状的…… 它们都是所谓的GUI(Graphics User Interface图形用户接口),我们可以通过鼠标点击来完成控制。而Win32 Console Application(win32控制台应用程序)往往是像MS-DOS窗口(XP中叫命令提示符)的样子出现,我们得用键盘输入各种命令来使用它; 或者叫CUI(Character User Inte
阅读全文