![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编程知识
文章平均质量分 81
cslie
这个作者很懒,什么都没留下…
展开
-
C++ string详解
之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。 好了,进入正题………首先,为了在我们的程序中使用strin转载 2008-02-23 22:32:00 · 439 阅读 · 0 评论 -
get_memory(char* p,int num) 续
根据前面我们总结出一条"真理", 进入函数内部的参数不可改变,可以改变的是其指向的内容, 那么前面的分配内存的函数可以这样写 void get_memory(char** p,int num){ *p=(char*)malloc(num*sizeof(char));} 指向指针的指针,指针不变,指针指向的内容改变 如何使用呢 get_memo原创 2009-07-14 15:25:00 · 1369 阅读 · 0 评论 -
c++默认构造函数的一个问题
csdn上看到一个问题 http://topic.csdn.net/u/20090714/00/e7dad941-daf0-4905-a679-7a56ff412f77.html?80540#replyachor原文如下:#include using namespace std; class test{ public: //test(){} int x; int y; }; int ma原创 2009-07-15 09:07:00 · 1032 阅读 · 0 评论 -
类中使用 createthread 如何传递this
本文链接:http://www.titilima.cn/show-66-1.html 按:球胡麻差,山西方言,乱七八糟之意。C++对于托管代码的封装一向不是很尽善尽美,从最初的static成员函数到MFC的消息映射表,及至ATL的thunk机制。真可谓花样百出、层出不穷了。究其原因,这乃是C++的this指针惹的祸,这个“祸害”也就是Borland的VCL是用Objec转载 2009-07-20 23:12:00 · 2366 阅读 · 1 评论 -
浅析sstream库
库定义了三种类:istringstream、ostringstream和stringstream,分别用来进行流的输入、输出和输入输出操作。另外,每个类都有一个对应的宽字符集版本。使用string对象来代替字符数组。这样可以避免缓冲区溢出的危险。而且,传入参数和目标对象的类型被自动推导出来,即使使用了不正确的格式化符也没有危险。istringstream和ostringstream主要用在内核格式转载 2009-07-27 17:47:00 · 981 阅读 · 0 评论 -
前置声明
#include namespace GNE { class Time; class Packet;class Buffer {public: Buffer& Buffer::operator >> (Time& x) { 这就叫前置声明class Time;class Packet;原创 2009-07-27 17:47:00 · 468 阅读 · 0 评论 -
一个有趣的问题
今天忽然想到一个有趣的问题剑客(172738246) 09:39:51有个问题,设计一个返回数组长度的函数int g(char s[])例如 int s[20];g(s) 返回20蜡笔小新NO1(326238989) 09:40:11为什么要设计?蜡笔小新NO1(326238989) 09:40:28C语言规定数组是必须知道哦长度的剑客(172738246) 09:41:00不错,理由呢□ヘζ原创 2009-07-29 10:00:00 · 588 阅读 · 0 评论 -
一个栈的题目
http://stor.chinaunix.net/bbs/archiver/tid-897190.html题目如下栈内存何时释放?char * func1(){char a[10];char *p; strcpy(a,"abc"); p = a; return p;}main(){char *p; strcpy(p,func1())原创 2009-07-29 11:15:00 · 562 阅读 · 0 评论 -
C 全局数组和局部数组(堆栈数组) 的初始化不同
int result[10];如果是全局数组,就自动会初始化为0但如果是在函数中定义,那么必须要先初始化int result[10];memset(result,0,sizeof(result)); // 注意是sizeof(result) = 40 不是 10 哦原创 2017-06-20 14:48:20 · 2863 阅读 · 0 评论 -
求组合数
拼的是代码少int C(int n,int m){ int result = 1; for(int i = 1;i<=m;i++) result= result*(n--)/i; return result;}调用C(10,2) 补充知识 C(10,2) = C(10,8)原创 2017-06-21 16:42:34 · 314 阅读 · 0 评论 -
get_memory(char* p,int num)
char* get_memory(char* p,int num){ p=(char*)malloc(num*sizeof(char)); return p;} char *str = NULL; str = get_memory(str,12); strcpy(str,"helloWorld!"); free(str); 反汇编 0041142原创 2009-07-14 10:48:00 · 1767 阅读 · 0 评论 -
Const用法小结
1. const常量,如const int max = 100; 优点:const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查,而对后者只进行字符替换,没有类型安全检查,并且在字符替换时可能会产生意料不到的错误(边际效应)2. const 修饰类的数据成员。如:class A{const int size;… }const数据成员只在某个对象生存期内是常量,而对于整个类而转载 2008-10-30 09:31:00 · 351 阅读 · 0 评论 -
防止传值方式传递
先看书上的做法class noCC{ int i; noCC(const noCC&); //声明一个私有的构造函数,而且没有定义(无所谓) public: noCC(int I=0):i(I){};};void g(const noCC n){}; main() 这么写 noCC n; g(n); //erro noCC n1=n; //erro n原创 2008-03-06 17:25:00 · 462 阅读 · 0 评论 -
VC中基于 Windows 的精确定时
在工业生产控制系统中,有许多需要定时完成的操作,如定时显示当前时间,定时刷新屏幕上的进度条,上位 机定时向下位机发送命令和传送数据等。特别是在对控制性能要求较高的实时控制系统和数据采集系统中,就更需要精确定时操作。 众所周知,Windows 是基于消息机制的系统,任何事件的执行都是通过发送和接收消息来完成的。 这样就带来了一些问题,如一旦计算机的CPU被某个进程占用,或系统资源紧张时,发送到消息转载 2008-02-23 22:40:00 · 496 阅读 · 0 评论 -
#pragma 预处理指令详解
在所有的预处理指令中,#pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。 其格式一般为: #pragma para 其中para为参数,下面来转载 2008-02-23 22:44:00 · 419 阅读 · 0 评论 -
strlen源码剖析
学习高效编程的有效途径之一就是阅读高手写的源代码,CRT(C/C++ Runtime Library)作为底层的函数库,实现必然高效。恰好手中就有glibc和VC的CRT源代码,于是挑了一个相对简单的函数strlen研究了一下,并对各种实现作了简单的效率测试。strlen的函数原形如下: size_t strlen(const char *str);strlen返回str中字符的个数,其转载 2008-02-24 19:44:00 · 478 阅读 · 0 评论 -
深入探讨C++中的引用
引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵活地使用引用,可以使程序简洁、高效。我在工作中发现,许多人使用它仅仅是想当然,在某些微妙的场合,很容易出错,究其原由,大多因为没有搞清本源。故在本篇中我将对引用进行详细讨论,希望对大家更好地理解和使用引用起到抛砖引玉的作用。 引用简介 引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。 引用的声明方转载 2008-02-23 21:27:00 · 451 阅读 · 0 评论 -
深入分析C++中char * 和char []的区别
先看一个题目 编写一个函数,作用是把一个char组成的字符串循环右移n个。比如原来是“abcdefghi”如果n=2,移位后应该是“hiabcdefgh” 函数头是这样的://pStr是指向以/0结尾的字符串的指针//steps是要求移动的nvoid LoopMove ( char * pStr, int steps ){ //请填充...}我先给出我当时的解法:void Loop原创 2008-02-27 15:43:00 · 684 阅读 · 0 评论 -
内存分配问题与调试机制
: 内存分配函数 MFCWin32或者C语言的内存分配API,有四种内存分配API可供使用。 Win32的堆分配函数 每一个进程都可以使用堆分配函数创建一个私有的堆──调用进程地址空间的一个或者多个页面。DLL创建的私有堆必定在调用DLL的进程的地址空间内,只能被调用进程访问。 HeapCreate用来创建堆;HeapAlloc用来从堆中分配一定数量转载 2008-02-29 08:52:00 · 606 阅读 · 0 评论 -
vptr的初始化
class base{ int i;public: base(int I):i(I){} virtual int sum(){return i;}}; 主程序 base b(100); b.sum(); 看base的构造函数class base{ int i;public: base(int I):i(I){}00401250 push ebp 00401原创 2008-03-03 11:06:00 · 995 阅读 · 0 评论 -
虚函数的一点心得
一直对虚函数不太理解,今天写了个小程序玩玩,也算有点心得.class base{ int i;public: base(int I=0):i(I){} virtual int sum() const { return i; } void printf_i_address() { printf("i address is :%x/n", &i); }};class derived:原创 2008-03-02 15:26:00 · 589 阅读 · 0 评论 -
32位代码优化常识
代码优化的含义: 代码优化的目标当然是体积小和速度快,但是在通常的情况下二者就象鱼和熊掌一样不能得兼,我们通常寻找的是这二者的折中,究竟应该偏向何方,那就得具体看我们的实际需要. 但有些常识是我们应该牢记的,下面就结合我们最常遇到的具体情况来漫谈一下: 1.寄存器清0 我绝对不想再看到下面的写法: 1) mov eax, 00000000h转载 2008-03-05 10:27:00 · 469 阅读 · 0 评论 -
镜面反射与轴对称的区别
相同点:镜面反射与轴对称的两个图形都全等不同点:镜面反射的两个图形或物体不在同一平面内,成轴对称的两个图形在同一平面内;轴对称是关于线对称,镜面反射是关于面的对称.原创 2017-06-27 11:05:41 · 3045 阅读 · 0 评论