C/C++
文章平均质量分 58
飞翔的黄瓜
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
对线程调度中Thread.sleep(0)的深入理解
在Java或者C#中,都会用到 Thread.Sleep()来使线程挂起一段时间。那么你有没有正确的理解这个方法的用法呢?思考下面这两个问题:1、假设现在是 2014-8-13 17:00:00.000,如果我调用一下 Thread.Sleep(1000) ,在 2014-8-13 17:00:01.000 的时候,这个线程会不会被唤醒?2、代码中添加:Thread.Sleep(0转载 2017-04-14 11:41:08 · 966 阅读 · 0 评论 -
gets()getchar()与缓冲区的问题
今天做一道算法题时,遇到可这样的问题#include "stdafx.h"#include "iostream"#include "string"int main(){ int num=0; char a[100]; std::cin>>num;//这里输入完成后,会直接进入循环执行一次 std::cout<<std::flush; //std::cin.clear();原创 2017-08-23 10:57:49 · 2228 阅读 · 0 评论 -
1003. 我要通过!(20)
这道题花了大半天,真是有挫败感。其中主要发现三点问题1.用gets()取得输入的字符时,取得缓冲区换行符'\n'2.对题意本身理解问题3.PAT平台编译和我的VS2010下编译的一些头文件有一些区别,不符合会通不过1003. 我要通过!(20)时间限制400 ms内存限制65536 kB代码长度限制原创 2017-08-23 14:40:21 · 408 阅读 · 1 评论 -
内存字节对齐
1:数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小或者成员的子成员大小(只要该成员有子成员,比如说是数组,结构体等)的整数倍开始(比如int在32位机为4字节,则要从4的整数倍地址开始存储。 2:结构体作为成员:如果一个结构里有某些结构体成员,则结构体成员要从其内部最大元素大小转载 2017-09-14 10:40:26 · 217 阅读 · 0 评论 -
c++对负数取余的判定
今天用到了,记录一下 c++11的几个例子21 % 6; /* result is 3 */ 求余看被除数的符号,不看除数21 % 7; /* result is 0 */ -21 % -8; /* result is -5 */ 21 % -5; /* result is 1 */21 / 6; /* result is 3 */原创 2017-09-07 15:15:57 · 7095 阅读 · 0 评论 -
Strcat,strcpy,strcmp,Strlen函数原型
各个函数的作用:strlen(s) : 返回S的长度,不包括字符串结束符NULL;strcmp(s1,s2) :比较两个字符串是否相同,若s1==s2,返回0,若s1>s2则返回正数,若s1strcat(s1,s2):将字符串s2连接到s1上,返回 s1;strcpy(s1,s2):将s2,复制到s1,返回 s1.实现:1.原创 2017-05-31 13:35:39 · 316 阅读 · 0 评论 -
C++中智能指针的设计和使用
第一遍不太明白,存着慢慢看 转载请标明出处,原文地址:http://blog.youkuaiyun.com/hackbuteer1/article/details/7561235 智能指针(smart pointer)是存储指向动态分配(堆)对象指针的类,用于生存期控制,能够确保自动正确的销毁动态分配的对象,防止内存泄露。它的一种通用实现技术是使用引用计数(reference count)。转载 2017-08-10 19:14:54 · 247 阅读 · 0 评论 -
实现单例模式(offer)
题目:设计一个类,我们只能生成该类的一个实例。解答:单例模式的类有以下几个特征:1.构造函数是private。2.有一个唯一实例的静态指针,且是private。3.有一个public接口函数,获得该唯一实例的指针。解法一:按照上面的特征实现的单例类如下:[cpp] view plain copy转载 2017-09-16 19:42:31 · 404 阅读 · 0 评论 -
int * (*ptr)()怎么理解(指向函数的指针)
先来分析一下int * (*ptr)()1.由于小括号的运算级比较高,结合方法又是自左向右,所以先运算(*ptr),表明定义了一个指针ptr2.接下来再运算最右边的小括号(),表明是一个函数3.接下平再运算* (*ptr)(),表明函数的返回值是一个指针4.那么int * (*ptr)()表明定义了一个指针变量ptr,它指向一个没有参数,并且返回值是一个整型指针的函数。这就叫做指向函数的原创 2017-09-17 15:41:19 · 17355 阅读 · 1 评论 -
C++复制构造函数和赋值符的区别
今天做C++ primer的习题,被复制构造函数和赋值符的区别弄晕了。简单地说,有一道题目如下描述:class t1;class t2 = t1;我先看见有一个等号,以为就是赋值符来做的,其实并不是这样的。做一个实验好了:[cpp] view plain copyclass CTest { public: CTes原创 2017-09-17 19:47:48 · 254 阅读 · 0 评论 -
【C++基础学习】C++中union结构
C++ union结构式一种特殊的类。它能够包含访问权限、成员变量、成员函数(可以包含构造函数和析构函数)。它不能包含虚函数和静态数据变量。它也不能被用作其他类的基类,它本身也不能有从某个基类派生而来。Union中得默认访问权限是public。在C/C++程序的编写中,当多个基本数据类型或复合数据结构要占用同一片内存时,我们要使用联合体;当多种类型,多个对象,多个事物只取其一时(我转载 2017-09-17 20:50:17 · 418 阅读 · 1 评论 -
C++中的static关键字
博文原址http://blog.youkuaiyun.com/hackbuteer1/article/details/7487694C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。一、面向过程设计中的static1、静态全局变量在全局变量前,加上关键字static,该变转载 2017-09-17 21:02:52 · 211 阅读 · 0 评论 -
static_cast, dynamic_cast, reinterpret_cast, const_cast区别比较
隐式转换(implicit conversion)[cpp] view plain copyshort a=2000; int b; b=a; short是两字节,int是四字节,由short型转成int型是宽化转换(bit位数增多),编译器没有warning,如下图所示。宽化转换(如char到int,int到lon转载 2017-09-18 09:33:28 · 378 阅读 · 0 评论 -
lintcode 通配符匹配 ac代码
今天在lintcode看到一道题,看了一下午的答案都没看懂,深深的挫败感,先记录下来,日后在啃实现支持'.'和'*'的正则表达式匹配。'.'匹配任意一个字母。'*'匹配零个或者多个前面的元素。匹配应该覆盖整个输入字符串,而不仅仅是一部分。需要实现的函数是:bool isMatch(const char *s, const char *p)您在真实的面试中原创 2017-07-28 16:07:24 · 437 阅读 · 0 评论 -
C++文件读写详解(ofstream,ifstream,fstream)还有简单使用
在看C++编程思想中,每个练习基本都是使用ofstream,ifstream,fstream,以前粗略知道其用法和含义,在看了几位大牛的博文后,进行整理和总结:这里主要是讨论fstream的内容:[java] view plain copy print?#include ofstream //文转载 2017-09-11 15:01:12 · 617 阅读 · 0 评论 -
PAT乙级1002
1002. 写出这个数 (20)时间限制400 ms内存限制65536 kB代码长度限制8000 B判题程序Standard作者CHEN, Yue读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。输入格式:每个测试输入包含1个原创 2017-08-22 11:22:51 · 318 阅读 · 0 评论 -
多线程之生产者消费者
看了别人写的多线程例子,自己也写了一个,贴上了防止以后忘记此例子有2个生产者,4个消费者,4个缓冲区,共生产12件商品#include "stdafx.h"#include #include #include HANDLE g_hEventBufferFull,g_hEventBufferEmpty;CRITICAL_SECTION g_cs;const int Pro原创 2017-08-21 20:59:23 · 318 阅读 · 0 评论 -
PAT乙级1001
今天开始刷PAT和lintcode 加油1001. 害死人不偿命的(3n+1)猜想 (15)时间限制400 ms内存限制65536 kB代码长度限制8000 B判题程序Standard作者CHEN, Yue卡拉兹(Callatz)猜想:原创 2017-08-22 09:21:18 · 283 阅读 · 0 评论 -
针对上一篇指针问题详细说明(c++向函数传递指针并修改其指向的问题)
一个用来交换两个数的值的函数,众所周知的错误写法为:[cpp] view plain copy #include using namespace std; void swap(int a, int b) { int t = a; a = b; b = t; }转载 2017-05-10 15:52:25 · 689 阅读 · 0 评论 -
关于多线程调用的问题
在进行简单的多线程创建学习时,遇到了以下疑惑当代码如下,试验多次后全局变量改变并无问题#include "stdio.h"#include #include "windows.h"int num;unsigned int _stdcall Init(PVOID lpParam){ //Sleep(100); num=num++; //Sleep(50); return原创 2017-06-01 14:38:01 · 301 阅读 · 0 评论 -
atoi函数的大概实现【剑指offer】
atoi函数是把字符串转变为整数的函数,例如“123”->123.而且有效输入只能有第一个字符的+,-号和0-9,以下为实现代码enum Status//标志代码是否有效{kValid,kInvalid};int g_nStatus=kValid;//设置全局变量int StrToInt(const char *str){ g_nStatus=kInvalid; long lo原创 2017-07-03 16:08:26 · 575 阅读 · 0 评论 -
C++继承详解:共有(public)继承,私有(private)继承,保护(protected)继承
C++继承详解:共有(public)继承,私有(private)继承,保护(protected)继承关于protected:只是在继承时和privated有区别,其他情况下和privated权限一样公有继承(public)、私有继承(private)、保护继承(protected)是常用的三种继承方式。1. 公有继承(public)公有继承的特点是基类的公有转载 2017-07-30 15:43:09 · 809 阅读 · 0 评论 -
c++父类与子类的转换(QT环境下)
今天重构QT控件获得焦点的函数时,需要将基类传化为子类,尝试过一些办法后成功,记录一下。1.子类向基类(向上强制类型转换)切割:覆盖方法和子类数据丢失的现象生成切割(slice)。下面套用一个别人的例子#include "stdafx.h" #include using namespace std; class Base { public:原创 2017-07-17 19:21:12 · 6095 阅读 · 1 评论 -
class和struct有什么区别?
C/C++面试题:class和struct有什么区别?考点:class和struct的区别出现频率:☆☆☆☆解析:这里有两种情况下的区别。(1)C的struct与C++的class的区别。(2)C++中的struct和class的区别。在第一种情况下,struct与class有着非常明显的区别。C是一种过程化的语言,struct只是作为一种复杂数据类型定义,struct转载 2017-07-22 10:10:55 · 1007 阅读 · 0 评论 -
对于vector初始化的问题
今天看c++ primer,有一段vector的初始化的这样用的vector ilist={1,2,3,4,5,6};我放到vs2010试了一下发现报错non-aggregates cannot be initialized with initializer list意思是对于non-aggregates(非聚合对象),不能使用初始化列表。只有聚合对象才可以这样使用。后来查了一下,这是原创 2017-07-22 10:31:11 · 1372 阅读 · 0 评论 -
C++异常处理(特别好的一篇文章)
引言异常,让一个函数可以在发现自己无法处理的错误时抛出一个异常,希望它的调用者可以直接或者间接处理这个问题。而传统错误处理技术,检查到一个局部无法处理的问题时:1.终止程序(例如atol,atoi,输入NULL,会产生段错误,导致程序异常退出,如果没有core文件,找问题的人一定会发疯)2.返回一个表示错误的值(很多系统函数都是这样,例如malloc,内存不足,分配失败,返转载 2017-07-22 18:07:28 · 395 阅读 · 0 评论 -
整型字符常量和字符字面量的区别 sizeof(char) 和 sizeof('a')
编译和执行如下c语言代码,系统将会输出什么?1234567#includeintmain(){ charc='0'; printf("%d %d",sizeof(c),sizeof('0')); return0;}转载 2017-08-01 09:06:00 · 615 阅读 · 0 评论 -
如何判断string字符串(或char字符),是否是数字
一.string字符串 看到两个方法, 方法一:使用C++提供的stringstream对象#include #include #include //包含这个类using namespace std; bool isnum(string s) { stringstream sin(s);转载 2017-07-24 14:16:24 · 8506 阅读 · 0 评论 -
c++异常处理格式
今天看了下c++异常处理格式,现用判断char字符是否是数字来使用异常处理,上代码class NumberParseException {};//自定义一个异常类,用来catchbool isNumber(char * str) { using namespace std; if (str == NULL) return false; int l原创 2017-07-24 14:21:50 · 401 阅读 · 0 评论 -
C++11 学习笔记 lambda表达式
写的不错的一篇lambda表达式,原链接http://blog.youkuaiyun.com/fjzpdkf/article/details/50249287 lambda表达式是C++11最重要也最常用的一个特性之一。lambda来源于函数式编程的概念,也是现代编程语言的一个特点。使用它的原因简单的说就是,编程中提到的 lambda 表达式,通常是在需要一个函数,但是又不想费神转载 2017-08-10 16:55:25 · 236 阅读 · 0 评论 -
c/c++多级指针与“多维”数组
早上开了一个小时的指针与数组的关系,虽然还是不是特别清楚,但是搞明白了数组指针和指针数组的关系,如下1.数组指针是指向一个数组首地址的指针,它实际上也是一种指针类型,类似于函数指针。它声明如: int (*pArr)[3] 。它说明pArr是一个数组指针,它指向的是一个数组元素为int类型并且数组元素的个数为3的一个数组指针,如果pArr+1则一下跳3个int元素的控件2.指针数组是数转载 2017-08-04 10:19:25 · 398 阅读 · 0 评论 -
c++ thread 使用不当导致的崩溃问题
看个例子class CTimer{public: // 析构函数 virtual ~CTimer(){ } // 开始 void start() { b_exit = false; i = 10; t = new std::thread(&CTimer::run, this); } void run() {// Sleep(1000);//...原创 2019-04-20 18:20:36 · 5473 阅读 · 0 评论
分享