
C/C++
文章平均质量分 68
ameyume
蓝蓝的天,白云朵朵。
展开
-
临时变量,左值右值,右值引用及其作用一文可编译的示例代码
学习《临时变量,左值右值,右值引用及其作用》时,运行代码,报错,以下是修改后可以运行的代码及修改过程:1.修改Base类定义(1)修改前Class Base(){报错内容:test.cpp:11:1: error: ‘Class’ does not name a type; did you mean ‘class’?Class Base(){^~~~~class(2)修改后把Class修改为全小写关键字classtest.cpp:11:12: error: ex...原创 2021-09-15 15:57:28 · 1391 阅读 · 0 评论 -
C++输出指针自增(++)运算示例
#include "stdafx.h"#include using namespace std;int _tmain(int argc, _TCHAR* argv[]){ char s[] = "012345678", *p = s; cout原创 2011-05-22 00:10:00 · 3227 阅读 · 0 评论 -
C++中struct与class的区别是什么?
<br />打基础<br />讨论一下结构(struct)与类(class)的区别,你认为结构(struct)有些什么作用,可以完全用类(class)取代么??<br />—————————————————————<br />问的人太多,干脆整理个FAQ吧。<br />首先,讨论这个问题应该仅从语法上讨论,如果讨论不同人之间编程风格上的差异,那这个问题是没有答案的。毕竟不同的人偏好不同。<br />从语法上,在C++中(只讨论C++中)。class和struct做类型定义时只有两点区别:<b转载 2011-04-13 11:14:00 · 1733 阅读 · 0 评论 -
拷贝构造函数和赋值构造函数的异同
<br />由于并非所有的对象都会使用拷贝构造函数和赋值函数,程序员可能对这两个函数<br /> 有些轻视。请先记住以下的警告,在阅读正文时就会多心:<br /> ?? 如果不主动编写拷贝构造函数和赋值函数,编译器将以“位拷贝”<br /> 的方式自动生成缺省的函数。倘若类中含有指针变量,那么这两个缺省的函数就隐<br /> 含了错误。以类String 的两个对象a,b 为例,假设a.m_data 的内容为“hello”,<br /> b.m_data 的内容为“world”。转载 2011-04-13 14:44:00 · 1469 阅读 · 0 评论 -
C/C++ typedef用法详解(真的很详细)
第一、四个用途用途一:定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如:char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, // 和一个字符变量;以下则可行:typedef char* PCHAR; // 一般用大写PCHAR pa, pb; // 可行,同时声明了两个指向字符变量的指针虽然:char *pa, *pb;也可行,但相对来说没有用typedef的形式直观,尤其在需要大量指针的地方,type转载 2011-04-15 17:37:00 · 46554 阅读 · 7 评论 -
errno返回值的对应错误码
errno返回值的对应错误码 #ifndef _ASM_GENERIC_ERRNO_BASE_H #define _ASM_GENERIC_ERRNO_BASE_H #define EPERM 1 /* Operation not permitted */ #define ENOENT 2 /*转载 2011-11-15 12:35:51 · 3282 阅读 · 0 评论 -
GNU C库函数参考手册(2)
逍遥飞狐多媒体作坊 译上一页 下一页错误报告许多GNU C库中的函数都监测和报告错误的情况,而且有时候你的程序需要检查它们以得到错误的情形。比如说:你打开了一个输入文件,你必须检查这个文件是否正确的打开了,而且在你调用一个库函数出错的时候打印出错信息或采取其他的措施。这一章描述错误报告功能是怎么工作的。要使用这个功能的话,你的程序必须包含头文转载 2011-11-15 12:37:14 · 4610 阅读 · 0 评论 -
printf中的short int, int, long int和long long int
hd: short int d: int ld: long int lld: long long int以下转自:http://blog.163.com/zheng_he_xiang/blog/static/186505326201110272018548/Linux基本数据类型大小——int,char,long int,long long int在Linu原创 2012-05-16 16:26:21 · 20909 阅读 · 0 评论 -
C语言运算符优先级详细列表
优先级运算符名称或含义使用形式结合方向说明1[]数组下标数组名[常量表达式]左到右 ()圆括号(表达式)/函数名(形参表) .成员选择(对象)对象.成员名原创 2012-09-14 23:29:45 · 1701 阅读 · 0 评论 -
指针函数与函数指针
1.指针函数先看下面的函数声明,注意,此函数有返回值,返回值为int *,即返回值是指针类型的。int *f(int a, int b);上面的函数声明又可以写成如下形式:int* f(int a, int b);让指针标志 * 与int紧贴在一起,而与函数名f间隔开,这样看起来就明了些了,f是函数名,返回值类型是一个int类型的指针。下面看指针函数的实现:in原创 2012-11-24 22:18:45 · 124266 阅读 · 26 评论 -
用32位int型变量表示单引号括起来的四个字符
在C、C++中可以用32位int型变量表示单引号括起来的四个字符,例如下面代码中的示例: // 字符c的16进制值是0x63,字符o的16进制值是0x6f, // 字符n的16进制值是0x6e int what = 'conn'; printf("The address of what is 0x%x \n", &what); printf("what 0x%x \n", wha原创 2013-01-02 22:52:49 · 2564 阅读 · 0 评论 -
大端法、小端法、网络字节序 转
大端法、小端法、网络字节序 转关于字节序(大端法、小端法)的定义《UNXI网络编程》定义:术语“小端”和“大端”表示多字节值的哪一端(小端或大端)存储在该值的起始地址。小端存在起始地址,即是小端字节序;大端存在起始地址,即是大端字节序。 也可以说: 1.小端法(Little-Endian)就是低位字节排放在内存的低地址端即该值的起始地址,高位字节排放在内存的高地址端。转载 2013-03-07 23:44:27 · 2138 阅读 · 0 评论 -
生成随机数函数rand用法简介
函数rand()是真正的随机数生成器,而srand()会设置供rand()使用的随机数种子。如果你在第一次调用rand()之前没有调用srand(),那么系统会为你自动调用srand()。而使用同种子相同的数调用 srand()会导致相同的随机数序列被生成。 srand((unsigned)time(NULL))则使用系统定时/计数器的值做为随机种子。每个种子对应一组根据算法预先原创 2013-03-10 22:20:16 · 14612 阅读 · 0 评论 -
C++ list中erase和remove函数的用法
erase的作用是,使作为参数的迭代器失效,并返回指向该迭代器下一参数的迭代器。如下:list ParticleSystem;list::iterator pointer;if(pointer->dead == true){ pointer = ParticleSystem.erase(pointer);}有一段关于错误使用erase的程序u原创 2013-03-24 19:49:43 · 37844 阅读 · 1 评论 -
Windows8安装Visual Studio 2012的方法
1.先下载VS2012的安装文件,网上有很多ISO安装文件,还是旗舰版的。VS2012_ULT_chs.iso下载下来1.6G多点。注:VS2012要求安装在win8系统上,xp,win7都安装不了。2.用Ultra ISO等程序打开安装即可,完全安装需要8G空间,我只安装了MFC选项,但也需要5G多的空间,安装后会把C++, C#,F#,VB等都安装上。安装过程很耗时原创 2013-12-04 22:04:05 · 11239 阅读 · 0 评论 -
C++类可以不显示声明构造函数,在创建类对象时编译器自动调用默认的构造函数
#include "stdafx.h"#include #include using namespace std;// 没有显示声明构造函数,编译器会调用默认的构造函数class Test1 {public: int i; string str;};// 显示声明了构造函数class Test2 {public: Test2(); Test2(int i, st原创 2014-07-08 00:13:39 · 8380 阅读 · 0 评论 -
C语言递归和非递归实现字符串反转函数char *reverse(char *str)
// 递归实现字符串反转 char *reverse(char *str) { if( !str ) { return NULL; } int len = strlen(str); if( len > 1 ) { char ctemp =str[0];原创 2010-05-17 08:58:00 · 10569 阅读 · 2 评论 -
C++父类子类中虚函数的使用
<br />构造函数不能是虚函数,因为在调用构造函数创建对象时,构造函数必须是确定的,所以构造函数不能是虚函数。<br />析构函数可以是虚函数。<br /> <br />1.父类Father.h:<br />#pragma onceclass Father{public: Father(void); virtual ~Father(void); virtual int getCount();public: int count;};<br />Father.cpp原创 2011-03-29 14:01:00 · 12347 阅读 · 0 评论 -
C++继承中构造函数、析构函数调用顺序及虚函数的动态绑定
<br />昨天面试被问到这些,惭愧的很,居然搞混了,悔恨了一把。决定要彻底搞清楚。也算是有所收获。<br /> 首先说说构造函数,大家都知道构造函数里就可以调用成员变量,而继承中子类是把基类的成员变成自己的成员,那么也就是说子类在构造函数里就可以调用基类的成员了,这就说明创建子类的时候必须先调用基类的构造函数,只有这样子类才能在构造函数里使用基类的成员,所以是创建子类时先调用基类的构造函数然后再调用自己的构造函数。通俗点说,你要用某些物品,但这些物品你没办法自己生产,自然就要等别人生产出来,你才能转载 2011-03-29 13:22:00 · 3554 阅读 · 0 评论 -
结构体中的占位符用法
typedef union{ struct x{ char a1 : 2; char b1 : 3; char c1 : 3; }x1; char c;}my_un;int main(){ my_un a; a.c = 100; printf("%d/n",a.x1.c1); printf("%d/n",sizeof(my_un)); return 0;} 输出结果原创 2011-03-21 20:07:00 · 6412 阅读 · 0 评论 -
Unicode数据类型(与ANSI关系和相互转化)
1,Windows定义Unicode数据类型WCHAR(Unicode字符)PWSTR(指向Unicode字符串的指针)PCWSTR(指向一个恒定的Unicode字符串的指针)以上都是Unicode字符和字符串。同时windows定义了ANSI/Unicode通用数据类型PTSTR和PCTSTR。Unicode宏没有前置下划线,_UNICODE宏用于c运行期头文件,而UNICODE用于window转载 2009-08-15 01:06:00 · 2796 阅读 · 0 评论 -
C任意进制转换程序
以前做C培训时写的一个任意进制转换的程序,不使用库提供的转换函数,现贴出来做一下记录。// scale.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include #include #include #include #define WIDTH 10#define DATAWIDTH 50原创 2009-06-19 21:49:00 · 8138 阅读 · 2 评论 -
递归实现十进制到n[2, 10]进制转换
#include "stdafx.h"#include #include // Change decimal n to r [2,10] scale numbervoid dToX( int n ,int r ) { if(n >= r) { dToX(n/r, r); } printf("%d", n%r); }void原创 2009-06-20 02:34:00 · 1799 阅读 · 0 评论 -
C++重载操作符+, - , *, <<的方法
C++操作符重载的简单例子重载操作符+, - , *, #include "stdafx.h"#include using namespace std;class Time{private: int hours; int minutes;public: Time(); Time(int h, int m = 0); Time ope原创 2009-06-22 22:20:00 · 4941 阅读 · 2 评论 -
输出1000以内的素数的算法
#include "stdafx.h"#include #include bool IsSushu(int n){ bool IsSushuFlg = true; if( n <= 1) { return false; } for( int i = 2; i <= (int)sqrt((double)n); i++ ) { if(原创 2010-03-20 23:29:00 · 10221 阅读 · 0 评论 -
冒泡排序,选择排序,快速排序
<br />/* * 冒泡排序 */void BubbleSort(int arr[], int n){ int temp; for (int i = 0; i < n - 1; i++) { for (int j = i + 1; j < n; j++) { if (arr[i] > arr[j]) { temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } }原创 2010-06-30 10:12:00 · 2330 阅读 · 0 评论 -
链表反转
即输入链表1->2->3->4->5,反转后为5->4->3->2->1。#include "stdafx.h"#include #include typedef struct _linka { int data; _linka* next; }linka;// Reverse linkvoid Reverse(linka*& head) {原创 2010-05-10 09:05:00 · 1450 阅读 · 0 评论 -
判断一个整数的二进制位中有多少个1
// 判断一个整数的二进制位中有多少个1void totalOne(int x){ int count = 0; while(x) { x = x & ( x - 1 ); count++; } printf("count = %d/n", count);}循环: x = x & ( x - 1 ); count++; 直到x为0为止。该方法的转载 2010-05-18 12:59:00 · 10572 阅读 · 4 评论 -
C语言实现字符串拷贝函数char *strcpy(char *dest, const char *src)
// 字符串拷贝函数的实现char *strcpy(char *dest, const char *src){ if ( !dest || !src ) { return NULL ; } if ( dest == src) { return dest ; } char *temp = dest ; while( (*src) !=原创 2010-05-18 09:15:00 · 11551 阅读 · 1 评论 -
使用map实现单词转换的程序
使用map实现单词转换的程序从map中查找单词时必须使用find函数,不能使用下表,因为在map中使用下标访问不存在的元素将导致在map容器中添加一个新的元素,新元素的key即要查找的内容。/****************************************************************************** Open file********原创 2010-05-29 10:59:00 · 2037 阅读 · 0 评论 -
关键字volatile有什么含意?并给出三个不同的例子
关键字volatile有什么含意?并给出三个不同的例子。 一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子: 1). 并行设备的硬件寄存器(如:状态寄存器) 2). 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables)3). 多线程应用中被几个任务共享的变量 回答不出这个问转载 2010-06-11 14:03:00 · 3580 阅读 · 6 评论 -
C基础,sizeof的用法等
int _tmain(int argc, _TCHAR* argv[]){ char arr[] = "123456789"; char *p1 = "12345"; char *p2 = arr; int iNum = 10; printf("sizeof(arr) = %d/n", sizeof(arr)); // sizeof(arr) = 10 printf("sizeof(p1) = %d/n", sizeof(p1)); // sizeof(p1) = 4原创 2010-09-19 08:50:00 · 1624 阅读 · 0 评论 -
使用VB或VC操作Excel 2003
‘************************************************************************‘‘ 演示用VB.NET 设置 Excel 单元格值和风格的小程序(例程)‘ 程序功能是:打开文件,设置单元格的风格和值,冻结窗口等‘ 网上类似的程序很多,但Excel 2003的SaveAs函数由新版本的函数代替,原函数‘ 为_saveas,这个程序同时也演示了如何使用新函数,另外也演示了如何冻结窗格‘‘ 关键字:Excel 2003转载 2010-11-01 20:00:00 · 4735 阅读 · 0 评论 -
宏、内联函数和普通函数的区别
介绍内联函数之前,有必要介绍一下预处理宏。内联函数的功能和预处理宏的功能相似。相信大家都用过预处理宏,我们会经常定义一些宏,如#define TABLE_COMP(x) ((x)>0?(x):0) 就定义了一个宏。 为什么要使用宏呢?因为函数的调用必须要将程序执行的顺序转移到函数所存放在内存中的某个地址,将函数的程序内容执行完后,再返回到转去执行该函数前的地方。这种转移操作要求在转去执行前要保存现场并记忆执行的地址,转回后要恢复现场,并按原来保存地址继续执行。因此,函数调用要有一定的时间和空间方面的开销转载 2010-11-09 17:15:00 · 2001 阅读 · 1 评论 -
sizeof, strlen, 指针和数组作为函数参数
<br />typedef struct st_test{ int id; char *pName; char class[10];}Student;void fn(Student *pStud) { pStud->id = 10; pStud->pName = "Tom Simith"; strcpy(pStud->class, "Class 1"); printf("sizeof(pStud) = %d /n", sizeof(pStud)); //原创 2011-01-25 14:19:00 · 3672 阅读 · 0 评论 -
测试编辑器属哪种模式,使用C语言判断处理器的大小端
<br />1.测试编辑器属哪种模式<br />下面这段代码可以用来测试一下你的编译器是大端模式还是小端模式:<br />short int x; <br />char x0,x1; <br />x=0x1122; <br />x0=((char*)&x)[0]; //低地址单元 <br />x1=((char*)&x)[1]; //高地址单元 <br />若x0=0x11,则是大端; 若x0=0x22,则是小端...... <br />上面的程序还可以看出,数据寻址时,用的是低位字节的地址。<br />原创 2011-01-30 16:05:00 · 2684 阅读 · 1 评论 -
派生类的构造函数对基类显示初始化
#include "stdafx.h"#include #include using namespace std;class A{public: //A():m_a(0) //{ // cout<<"Default constructor of class A is called."<<endl; // cout<<"m_a = "<<m_a<<原创 2009-08-10 22:55:00 · 4412 阅读 · 1 评论