c/c++
RationalGo
这个作者很懒,什么都没留下…
展开
-
strcmp && strcpy && strlen && strcat 源码
strcmp函数简介 原型:extern int strcmp(const char *s1,const char * s2); 用法: #include string.h> 功能:比较字符串s1和s2。 一般形式:strcmp(字符串1,字符串2) 说明: 当s1s2时,返回值>0转载 2014-07-30 23:42:23 · 617 阅读 · 0 评论 -
C++版的循环缓冲区类(实际测试可用!)
[cpp] view plaincopy/* * CCycleBuffer.h * * Created on: 2013-5-27 * Author: shiguang */ #ifndef __test__CCycleBuffer__ #define __test__CCycleBuffer__转载 2014-07-27 23:54:21 · 1022 阅读 · 0 评论 -
字节顺序
little-endian风格 0x12345678 高地址 00010010 00110100 01010110 01111000 低地址big-endian风格 0x12345678 高地址 01111000 01010110 00110100 00010010 低地址(以字节为单位,多字节数据的排放顺序。)原创 2014-07-27 23:51:59 · 563 阅读 · 0 评论 -
const的用法,特别是用在函数前面与后面的区别!
const的用法,特别是用在函数后面在普通的非 const成员函数中,this的类型是一个指向类类型的 const指针。可以改变this所指向的值,但不能改变 this所保存的地址。在 const成员函数中,this的类型是一个指向 const类类型对象的 const指针。既不能改变 this所指向的对象,也不能改变 this所保存的地址。 关键字:Const,Const函数,Const变转载 2014-07-16 23:56:32 · 762 阅读 · 0 评论 -
以指针或reference为参数的C++函数定义与调用对照表
初学者不易建立清晰的指针和reference概念,总结这个表以供快速参考:假设有对象定义:MyObjectType obj1;1. 值传递:如果函数定义为:void myFunction( MyObjectType obj);函数调用:myFunction(obj); //函数以外对象obj的值不会 改变2. reference传递:如果函数定义转载 2014-04-11 00:03:13 · 616 阅读 · 0 评论 -
C++中Reference与指针(Pointer)的使用对比
引用(reference)和指针(pointer)是学C++过程中最令人头疼的问题,常常不知道什么时候用哪个合适,又常常弄混。找到Dan Saks的这篇文章,讲的很清楚,强烈推荐,所以翻译一下供大家参考。———————————————————————————以下译自Dan Saks的文章 References vs. Pointers 英文原文———————————————————转载 2014-04-11 00:02:12 · 715 阅读 · 0 评论 -
一道C++的笔试题
今天看到一道C++的笔试题,感觉不错!记录一下。 char str1[] = "abc"; char str2[] = "abc"; const char str3[] = "abc"; const char str4[] = "abc"; const char* str5 = "abc"; const char* str6 = "abc";转载 2014-04-16 16:51:51 · 1155 阅读 · 1 评论 -
C++中 public,protected, private 访问
private, public, protected 访问标号的访问范围。private:只能由1.该类中的函数、2.其友元函数访问。不能被任何其他访问,该类的对象也不能访问。protected:可以被1.该类中的函数、2.子类的函数、3.其友元函数访问。但不能被该类的对象访问。public:可以被1.该类中的函数、2.子类的函数、3.其友元函数访问,4.该类的对象访问。 注:友元函数转载 2014-04-16 15:18:52 · 566 阅读 · 0 评论 -
一个fork的面试题
前两天有人问了个关于Unix的fork()系统调用的面试题,这个题正好是我大约十年前找工作时某公司问我的一个题,我觉得比较有趣,写篇文章与大家分享一下。这个题是这样的:题目:请问下面的程序一共输出多少个“-”?#include #include #include int main(void){ int i; for(i=0; i2; i++){转载 2014-04-16 16:53:36 · 523 阅读 · 0 评论 -
深入分析C++引用
关于引用和指针的区别的文章很多很多,但是总是找不到他们的根本区别,偶然在codeproject上看到这篇文章,觉得讲的挺好的,所以翻译了下,希望对大家有帮助。原文地址: http://www.codeproject.com/KB/cpp/References_in_c__.aspx 引言 我选择写 C++ 中的引用是因为我感觉大多数人误解了引用。而我之所以有这个感受转载 2014-03-13 23:15:10 · 529 阅读 · 0 评论 -
C++笔记
在块作用域内可通过作用域运算符“::”来引用与局部变量同名的全局变量。#include int i= 100;void main(void){ int i , j=50; i=18; //访问局部变量i ::i= ::i+4; //访问全部变量i j= ::i+i; //访问全部变量i和局部变量j co原创 2013-12-21 22:59:57 · 920 阅读 · 0 评论 -
2012年9月15日锐捷网络嵌入式研发笔试
[cpp] view plaincopy#include #include int main(void) { int x = 3, y = 4, z = 5; printf("%d", ~((x ^ y) && !z)); return EXIT_SUCCESS; } 结果:-1转载 2014-07-27 23:37:24 · 822 阅读 · 0 评论 -
C/C++程序员需要掌握的开源项目
作为一个经验丰富的C/C++程序员, 肯定亲手写过各种功能的代码, 比如封装过数据库访问的类, 封装过网络通信的类,封装过日志操作的类, 封装过文件访问的类, 封装过UI界面库等, 也在实际的项目中应用过, 但是回过头仔细想想,其实以前自己写过的这些代码,只能是在特定的项目或者特定的环境中使用, 对于自己来说, 在不同的项目中应用, 只需要复制代码, 改改也就可以了, 因为自己写的代码自己很熟转载 2014-07-27 23:53:12 · 612 阅读 · 0 评论 -
看懂下面C++代码才说你理解了C++多态虚函数!
#include using namespace std ;class Father{private : virtual void Say() //只有添加了virtual 关键字声明才会产生虚函数表 虚函数表在编译的时候确定 virtual是实现多态的关键 { cout } virtual void Run() { cout }}转载 2014-08-06 00:06:26 · 606 阅读 · 0 评论 -
优秀程序员不得不知道的20个位运算技巧
一提起位运算,人们往往想到它的高效性,无论是嵌入式编程还是优化系统的核心代码,适当的运用位运算总是一种迷人的手段,或者当您求职的时候,在代码中写入适当的位运算也会让您的程序增加一丝亮点,最初当我读《编程之美》求“1的数目”时,我才开始觉得位运算是如此之美,后来读到 《Hacker's Delight》,感慨到Henry S.Warren把位运算运用的如此神出鬼没,很多程序都十分精妙,我觉得在一转载 2014-07-30 13:39:42 · 478 阅读 · 0 评论 -
笔试面试中问到的常见问题总结
面试的三大重点,第一个是项目,项目这个应该挺好说的,只要自己有这方面的准备;第二个是数据结构和算法,这个无论在笔试还是在面试中都很重要。第三个如果面C++方向的话,C++基础很重要。接下来谈一下后二者各自的一些常见问题。一、数据结构和算法 链表:链表逆序,判断链表中是否存在环字符串:字符串匹配,单词反转,查找倒数第K个结点,最小子串和二叉树:树的转载 2014-07-29 23:26:41 · 653 阅读 · 0 评论 -
为什么 要虚析构函数
.#includeiostream>using namespace std;class A{public: A(){cout "A" endl;} virtual~A(){cout "~A" endl;}};class B : public A{public: B(){cout "B"转载 2014-07-29 23:09:18 · 806 阅读 · 0 评论 -
面试基础算法
[cpp] view plaincopyBubbleSort(R, n) { int i, j; int tmp; int exchange; for(i = 0; i { exchange = 0; for(j = n-1; j > i; j--)转载 2014-07-27 23:52:38 · 517 阅读 · 0 评论 -
详解一道C++笔试题,考察重载、覆盖、多态
题目是酱紫的:[cpp] view plaincopy#include #include using namespace std; class A { protected: int m_data; public: A(int data = 0) {转载 2014-08-02 00:12:28 · 527 阅读 · 0 评论 -
虚析构函数问题:为什么要将基类的的析构函数设成虚的?
某CSDN网友问:class A { public: ~A() { cout } }; class B:public A { public: virtual ~B() { cout } }; class C:public B { public:转载 2014-07-29 23:08:39 · 562 阅读 · 0 评论 -
C++对象数组的创建
使用一维指针创建对象数组:[cpp] view plaincopy//============================================================================ // Name : main.cpp // Author : ShiGuang /转载 2014-07-27 23:59:07 · 6301 阅读 · 0 评论 -
C++学习之友元函数
为什么要引入友元函数?因为我们不能在类的外部访问类的私有变量。传统的访问方法:[cpp] view plaincopy//============================================================================ // Name : main转载 2014-07-27 23:56:58 · 744 阅读 · 0 评论 -
武汉华嵌-嵌入式培训专家笔试题目
[cpp] view plaincopy//============================================================================ // Name : main.cpp // Author : sg131971 // Version : // C转载 2014-07-27 23:43:45 · 897 阅读 · 0 评论 -
[C++]关于i++和++i的学习
[C++]关于i++和++i的学习MoaKap今天在论坛上无意中看到有人问关于i++和++i的问题,感觉自己也不怎么熟悉,就仔细看了一下。感觉有位大侠的回复相当不错,很有特色,把问题讲得很明白,受教了。这里摘录一下,学习学习!-----------------------------------------------------------------------转载 2013-12-25 13:44:40 · 752 阅读 · 0 评论 -
C++语言的15个晦涩特性
这个列表收集了 C++ 语言的一些晦涩(Obscure)特性,是我经年累月研究这门语言的各个方面收集起来的。C++非常庞大,我总是能学到一些新知识。即使你对C++已了如指掌,也希望你能从列表中学到一些东西。下面列举的特性,根据晦涩程度由浅入深进行排序。1. 方括号的真正含义2. 最烦人的解析3.替代运算标记符4. 重定义关键字5. Placement new6.在声明变量的同时进行分支7.转载 2014-01-05 22:13:07 · 1060 阅读 · 0 评论 -
C语言深度解剖读书笔记(3.结构体中内存对齐问题)
很多人都觉得内存对齐这个问题很难,很不好算,总算错,其实我想说只要你画一画就没那么难了。好了,进入正题。本节知识点:1.结构体为什么要内存对齐(也叫字节对齐):其实我们都知道,结构体只是一些数据的集合,它本身什么都没有。我们所谓的结构体地址,其实就是结构体第一个元素的地址。这样,如果结构体各个元素之间不存在内存对齐问题,他们都挨着排放的。对于32位机,32位编译器(这是目前常见转载 2013-08-27 14:19:25 · 873 阅读 · 0 评论 -
C语言深度解剖读书笔记(3.预编译处理)
本节知识点:1.编译过程的简介: 预编译:a.处理所有的注释,以空格代替。b.将所以#define删除,并展开所有的宏定义,字符串替换。c.处理条件编译指令#if,#ifdef,#elif,#else,#endifd.处理#include,并展开被包含的文件,把头文件中的声明,全部拷贝到文件中。e.保留编译器需要使用的#pragm转载 2013-08-27 14:15:42 · 696 阅读 · 0 评论 -
C语言深度解剖读书笔记(1.关键字的秘密)
开始本节学习笔记之前,先说几句题外话。其实对于C语言深度解剖这本书来说,看完了有一段时间了,一直没有时间来写这篇博客。正巧还刚刚看完了国嵌唐老师的C语言视频,觉得两者是异曲同工,所以就把两者一起记录下来。等更新完这七章的学习笔记,再打算粗略的看看剩下的一些C语言的书籍。本节知识:1.c语言中一共有32个关键字,分别是:auto、int、double、long、char、short、转载 2013-08-27 14:14:05 · 733 阅读 · 0 评论 -
C语言深度解剖读书笔记(2.字符的技巧)
本节接触了,C语言中的三大蛋疼:符号优先级 ++i顺序点 贪心法 (其实这里面好多都是跟编译器有关的,而且有好多问题都是可以通过良好的编程习惯避免的)本节知识点:1.注释问题: 注释不能把关键字弄断,如:in/*注释*/t 注释不是简单的剔除,而是使用空格替换 编译器认为双引号括起来的内容都是字符串,双斜杠也不例外。如:char *p转载 2013-08-27 14:15:03 · 711 阅读 · 0 评论 -
C++成员变量、函数修饰符与访问权限
转载 2013-08-01 09:41:32 · 889 阅读 · 0 评论 -
C++模板用法
1. 模板的概念。我们已经学过重载(Overloading),对重载函数而言,C++的检查机制能通过函数参数的不同及所属类的不同。正确的调用重载函数。例如,为求两个数的最大值,我们定义MAX()函数需要对不同的数据类型分别定义不同重载(Overload)版本。//函数1.int max(int x,int y);{return(x>y)?x:y ;}//函数2.float转载 2013-05-28 14:17:05 · 639 阅读 · 0 评论 -
C++关于std namespace与# include<iostream>关系的有关问题
C++关于std namespace与# include关系的问题版上的大侠们你们好!我是一名在校的C++初学者,关于namespace std 与# include一直有一个问题没有弄懂,就是关于cin、cout等对象定义在哪里的问题。我已经知道的是如果要使用这两个istream、ostream类的对象时,在include中需要包含相应的头文件。而这时又要使用命名空间"using nam转载 2013-05-28 14:17:49 · 1388 阅读 · 0 评论 -
C++ namespace的用法
关键字namespace定义了一个名字空间,里面的变量和函数,声明在此名字空间外使用须在前面加名字空间名称.例如:#includenamespace my{int a=3;}class test{public:int a;test(){a=1;}void fb(){int a=0;cout}};int main(){t转载 2013-05-28 14:15:28 · 719 阅读 · 0 评论 -
Java Tip 27: Typesafe constants in C++ and Java
This article offers an alternative to using enums or const ints to help eliminate range checking and runtime errors -- first looking at C++ and then exploring an implementation of the same using Jav转载 2013-05-22 21:01:47 · 696 阅读 · 0 评论 -
Vector 使用总结
标准库Vector类型使用需要的头文件:#include Vector:Vector 是一个类模板。不是一种数据类型。 Vector是一种数据类型。一、 定义和初始化Vector v1; //默认构造函数v1为空Vector v2(v1);//v2是v1的一个副本Vector v3(n,i);//v3包含n个值为i的元素Vector v4(n); //v4含有n转载 2013-05-17 14:16:00 · 514 阅读 · 0 评论 -
C++之 引用
引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵活地使用引用,可以使程序简洁、高效。我在工作中发现,许多人使用它仅仅是想当然,在某些微妙的场合,很容易出错,究其原由,大多因为没有搞清本源。故在本篇中我将对引用进行详细讨论,希望对大家更好地理解和使用引用起到抛砖引玉的作用。 引用简介 引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。转载 2013-08-30 23:03:05 · 642 阅读 · 0 评论 -
sizeof('a')的结果是多少?
这个要看是在C中还是C++中了。根据C99标准的规定,'a'叫做整型字符常量(integer character constant),为int型,故结果是4(对于32位机器);而ISO C++规定,'a'叫做字符字面量(character literal),为char型,故结果是1。C强调了'a'的“数”属性,而C++强调了'a'的“字符”属性。原创 2013-11-18 10:08:06 · 3796 阅读 · 1 评论 -
“cout”: 未声明的标识符”是怎么回事?
“cout”: 未声明的标识符”是怎么回事?vs2010初学VS2010时问题:例:我的源文件为#include int main (){char a,b,c;a = 'b';b = 'c';c = a;cout return 0;}编译时出错:\aaa.cpp(9) : error C2065: “cout”: 未声转载 2013-12-17 22:35:55 · 2110 阅读 · 0 评论 -
c++ 笔试题(部分)
①链表反转单向链表的反转是一个经常被问到的一个面试题,也是一个非常基础的问题。比如一个链表是这样的: 1->2->3->4->5 通过反转后成为5->4->3->2->1。最容易想到的方法遍历一遍链表,利用一个辅助指针,存储遍历过程中当前指针指向的下一个元素,然后将当前节点元素的指针反转后,利用已经存储的指针往后面继续遍历。源代码如下:struct linka { int转载 2013-12-16 00:26:17 · 659 阅读 · 0 评论 -
嵌入式系统 Boot Loader 技术内幕
嵌入式系统 Boot Loader 技术内幕1. 引言 在专用的嵌入式板子运行 GNU/Linux 系统已经变得越来越流行。一个嵌入式 Linux 系统从软件的角度看通常可以分为四个层次: 1)引导加载程序。包括固化在固件(firmware)中的 boot 代码(可选),和 Boot Loader 两大部分。 2)Linux 内核。特转载 2013-12-16 00:18:43 · 710 阅读 · 0 评论