C&C++
文章平均质量分 74
大唐游子
这个作者很懒,什么都没留下…
展开
-
头文件和Include: Why and How
头文件和Include: Why and How简介这篇文件介绍了一个常见的新手问题:如何理解#include, 头文件和源文件的关系。为什么需要头文件如果你刚写C++, 你可能会问为什么需要#include文件,为什么需要多个.cpp文件?原因很简单:可以提升编译速度。当你的程序和代码越来越大,如果所有的东西都放到一个源文件中,即使你只做了一个小小的修改,所有的东西都要重新编译。对规模比较小的程序这可能不是个问题,但是对规模较大的程序,编译一次可能会耗费好几分钟。你能想象到每次小的修改都要等翻译 2021-08-28 07:13:14 · 389 阅读 · 0 评论 -
PRE30-C. 不要通过拼接来构造通用字符名
PRE30-C. 不要通过拼接来构造通用字符名C语言标准支持将不在基本字符集中的字符作为通用字符名,用于标识符、字符常量和字符串字面值。通用字符名 \Unnnnnnnn 指定了8位数字的短标识符 nnnnnnnn。类似的,通用字符名\unnnn 指定了一个4位数字构成的短标识符 nnnn 。C语言标准,5.1.1.2,第4段 [ISO/IEC 9899:2011], 描述如下:如果一个满足通用字符名的字符序列是通过符合拼接构建的(6.10.3.3), 行为是未定义的。参见未定义行为3.总之,除翻译 2021-08-21 07:36:02 · 237 阅读 · 0 评论 -
[转载]Declarations, Prototypes, Definitions, and Implementations
Declarations, Prototypes, Definitions, and ImplementationsPublished by EsslercuffiOct 26, 2014 (last update: Oct 28, 2014)Many people, when learning C++, seem to have some confusion about the distinction between and purpose of declarations and defi转载 2021-08-12 07:33:40 · 230 阅读 · 0 评论 -
C语言从stdin读取一行字符串的几种方法
C语言从stdin读取一行字符串的几种方法getsgets函数的头文件是,原型如下:char *gets(char *s);gets从stdin中读入一行内容到s指定的buffer中,当遇到换行符或EOF时读取结束。读取成功时,返回s地址;失败时返回null。需要注意的是,gets会将行末尾的'\n'字符或EOF替换成'\0',这样,gets读取的内原创 2014-11-30 11:12:28 · 77891 阅读 · 0 评论 -
C++ 中的const
c++中的const:1. const修饰的内部类型变量,原创 2014-06-09 22:12:20 · 692 阅读 · 0 评论 -
简化版vector
#include using namespace std;templateclass MyVector{public: MyVector(): next(0){} ~MyVector(){ for(int i = 0; i < next; i++){ delete value_array[i]; } } void push_back(const T& t){原创 2014-07-16 21:56:34 · 908 阅读 · 0 评论 -
nested dependent type names
参考:原创 2014-05-14 22:34:56 · 907 阅读 · 0 评论 -
在模板内部定义非成员函数(Define non-member functions inside templates)
《Thinking in C++》习题16.18,我的实现代码为://: C12:IostreamOperatorOverloading.cpp// Example of non-member overloaded operators#include "../require.h"#include #include // "String streams"#include using原创 2014-05-16 22:14:41 · 950 阅读 · 0 评论 -
动态二维数组的连续创建
#include using namespace std;class X{public: X(int ii = 0): i(ii) { cout << "build " << i << endl; } ~X(){ cout << "destroy " << i << endl; } void assign(int ii){ i = ii; } void print原创 2014-04-22 22:12:44 · 1251 阅读 · 0 评论 -
判断LBP值是否为uniform
LBP值是0~255之间的数值,uniform指的是其二进制形式的翻转次数是否超过2次,比如"00001110" 为unifom,而“00110011”不是uniform.#include using namespace std;//#define _DEBUG_INFOvoid printBinary(const unsigned char val){ for(int原创 2014-03-20 22:46:30 · 1397 阅读 · 0 评论 -
C++读取当前文件夹下所有某种类型文件
参考:http://www.uml.org.cn/c++/201208075.asp#include #include #include using namespace std;int main(int argc, char* argv[]){ //创建文件名列表文件,若存在则清空文件 fstream file_list("name.txt", std::ios::out转载 2013-12-19 21:31:11 · 5196 阅读 · 1 评论 -
shared_ptr智能指针的简单实现
shared_ptr是一种智能指针数据结构,除了具有智能指针的基本功能——自动管理资源释放外,还有一个特征就是"share",我理解所谓的“share”就是多个shared_ptr共同分享同一处资源,避免了资源的拷贝。比如,当执行拷贝构造函数操作时:class X{...};shared_ptr px1(new X());shared_ptr px2(px1);或是赋值操作时:c原创 2013-12-06 21:05:41 · 2392 阅读 · 2 评论 -
template programming学习(1) ---- member template
member template是位于template内部的template。一个使用例子是,原创 2014-08-08 21:14:10 · 1000 阅读 · 0 评论 -
template programming学习(2) ---- function template arguments type deduction
在调用类模板时,需要在jian'k原创 2014-08-08 21:28:03 · 891 阅读 · 0 评论 -
test
#include int main(){ std::cout << "Hello, World" << std::endl;}原创 2017-09-29 06:40:15 · 435 阅读 · 0 评论 -
C语言execv()函数:执行文件函数
http://c.biancheng.net/cpp/html/273.html相关函数:fork, execl, execle, execlp, execve, execvp头文件:#include 定义函数:int execv (const char * path, char * const argv[]);函数说明:execv()用来执行参数path 字符转载 2016-01-06 00:00:19 · 9672 阅读 · 0 评论 -
binary_search
binary_search感觉写程序最重要的有两点:一、理解算法本身的实现原理和过程;二、理解如何用程序语言将算法过程表达出来。#include <stdio.h>#define N 10int a[N] = {0, 1, 2, 3, 3, 3, 6, 7, 8, 9};int binary_search(int a[], int l, int r, int x){ int i;原创 2015-10-25 00:18:12 · 690 阅读 · 0 评论 -
Linux socket 编程简单例子
Linux socket 编程简单例子原创 2015-03-30 23:17:22 · 701 阅读 · 0 评论 -
skip white space and check toks
点击打开链接#include #include char whitespace[] = " \t\r\n\v";/* Skip white space and check *ps lies in toks */int peek(char **ps, char *es, char *toks){ char *s; s = *ps; while(s < es && strc转载 2014-12-22 23:06:09 · 1014 阅读 · 0 评论 -
VS2010中malloc的使用
在VS2010 Express中,写c程序:例子1:#include #include #define LEN 128int main(){ printf("\n"); int* a = (int*)malloc(sizeof(int)*LEN); free(a); return 0;}编译失败,报错:1>------ Build started: Proje原创 2015-01-11 17:48:10 · 6803 阅读 · 2 评论 -
两种输入重定向的方法
两种输入重定向的方法利用命令prog 上面的命令会将file内容重定向到stdin,prog程序内部可以直接对stdin进行处理,如:#include int main(){ int c; while(EOF != (c = getchar())){ putchar(c); }} 2. 利用freopen函原创 2014-11-30 09:30:13 · 3349 阅读 · 0 评论 -
template programming 学习(3) Argument dependent lookup
Argument dependent lookup Qualified name: 指的是由类名、变量名或者变量指针作为前缀的名字:MyClass::f();x.f();p->f(); 这些前缀指定了f()的名字空间。 在模板中,有另外一种没有前缀的名字,称为Argument dependent lookup。当名字没有前缀时,编译器会依据其参数的命名空间去寻找原创 2014-08-14 19:38:18 · 915 阅读 · 0 评论 -
const 默认是内部连接的
const 默认是内部连接的,所以,如果想让一个const变量可以被外部引用,其定义要写成:extern const int x = 10; 而单独写extern const int x, 意味着const变量x在别处进行了定义。 例1://file1.cppextern const int x;//file2.cppconst int x =10; 编原创 2013-11-06 22:00:06 · 987 阅读 · 0 评论 -
C语言求四舍五入的方法
double Round(double df) { return ( ceil(df)-df > df-floor(df) ) ? floor(df) : ceil(df); } int Round(double df){ if(df > 0) return ((int)(df + 0.5)); else return ((int)(df原创 2012-10-09 23:58:57 · 1669 阅读 · 0 评论 -
指针的危险
指针的危险下面的代码有没有问题?如果有的话,问题在哪里?int array[ARRAY_SIZE];int *pi;for( pi = &array[0]; pi &array[ARRAY_SIZE]; ){*++pi = 0;}有两个错误。对增值后的指针进行解引用时,数组的第一个元素并没有被清零。另外,指针在越过数组的右边界以后仍原创 2010-03-26 09:31:00 · 1335 阅读 · 0 评论 -
在一个无符号整数中翻转位的顺序
1、题目:请编写函数unsigned int reverse_bits( unsigned int value );这个函数的返回值是把value的二进制位模式从左到右变换一下后的值。例如,在32位机器上,25这个值包含下列各个位:00000000000000000000000000011001函数的返回值应该是2,550,136,832,它的二进制位模式是:1001原创 2010-03-23 16:54:00 · 2149 阅读 · 0 评论 -
[转]堆(heap)和栈(stack)有什么区别?
http://www.cnblogs.com/simonhaninmelbourne/archive/2009/11/02/1594454.html堆(heap)和栈(stack)有什么区别? 简单的可以理解为: heap:是由malloc之类函数分配的空间所在地。地址是由低向高增长的。 stack:是自动分配变量,以及函数调用的时候所使用的一些空间。地址是由高向低减少的。 预备知识—转载 2009-12-17 23:11:00 · 617 阅读 · 0 评论 -
函数指针的2个例子
第一个是我写的程序://函数指针的用法//---------------------Include Files-------------#include #include //-----------------end Include Files-------------double BISECTION(double x0, double (*funcptr)(double)原创 2009-12-01 23:25:00 · 702 阅读 · 0 评论 -
字符串输入的陷阱
相关讲解详见《C语言程序设计实用教程(Applied C: An Introduction and More)》,[美]Alice E. Fischer, David W. Eggert等著,裘岚、张晓芸等译,电子工业出版社,2001年9月第1版,第362页至363页。先看第一个程序:#include "stdio.h"typedef char* string;void main(原创 2009-11-22 10:52:00 · 875 阅读 · 0 评论 -
牛顿迭代法解非线性方程 x ^ 3 = a, 即求a的开三次方
执行环境:VC6.0//牛顿迭代法解非线性方程 x ^ 3 = a, 即求a的开三次方 //---------------------Include Files------------- #include //#include //-----------------end Include Files------------- #define M 10//迭代次数 double f(doub原创 2009-11-19 15:12:00 · 6288 阅读 · 0 评论 -
[转]scanf(), fscanf()的用法
原文地址:http://beej.us/guide/bgc/output/html/multipage/scanf.html13.5. scanf(), fscanf() Read formatted string, character, or numeric data from the console or from a file. Prototypes #include int转载 2009-11-08 19:04:00 · 2167 阅读 · 0 评论 -
[转载]C-内存地址对齐及大小端
原文地址:http://hi.baidu.com/arslong/blog/item/4e9bb8f8349f5d07d8f9fddf.html我们常常看到“alignment", "endian"之类的字眼, 但很少有C语言教材提到这些概念. 实际上它们是与处理器与内存接口, 编译器类型密切相关的. 考虑这样一个例子: 两个异构的CPU进行通信, 定义了这样一个结果来传递消息: st转载 2009-10-29 23:40:00 · 651 阅读 · 0 评论 -
[转]好文!typedef的四个用途和两个陷阱
对typedef和函数指针讲的很透彻,受教了!原文地址:http://faq.csdn.net/read/217385.html 用途一: 定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如: char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, // 和一个字符变量; 以下则可行: typedef char*转载 2009-11-03 21:00:00 · 558 阅读 · 0 评论 -
用指针传递函数参数的问题
下面的find_char是一个在一组字符串中查找某一字符的程序。 #include #define TRUE 1#define FALSE 0#define LENGTH 10int find_char( char **strings, int value){ //对于列表中的每个字符串 while( *strings != NULL)原创 2010-03-26 19:18:00 · 1664 阅读 · 2 评论 -
ascii_to_integer
1. 题目为下面这个函数原型编写函数定义:int ascii_to_integer(char *string)这个字符串参数必须包含一个或多个数字,函数应该把这些数字字符转换为整数并返回这个整数。如果字符串参数包含了任何非数字字符,函数就返回零。出处:《C和指针》。Kenneth A. Reek 著,徐波译。人民邮电出版社。第139页。2. 我的代码int as原创 2010-04-09 17:43:00 · 1640 阅读 · 0 评论 -
strerror函数
1 题目测试strerror函数。2 代码:执行环境:VC++6.0 #include #include #include void main(){ int errnum; for(errnum = 1; errnum < 43; errnum++) printf("error %d : %s/n", errnum, strer原创 2010-04-26 15:44:00 · 4333 阅读 · 0 评论 -
不要用函数的指针参数去获取函数内部的内存
今天写了下面这个程序int GetImage(IplImage* img){ img = m_Cam->CaptureImage(); if(img) return 0; else return -1;}IplImage* pImg = NULL;GetImage(pImg);本来想通过指针参数pImg去获得原创 2012-09-12 21:26:27 · 626 阅读 · 0 评论 -
全局变量、静态全局变量和静态局部变量的链接性
总结自Stephen Prata的《C++ Primer Plus》第五版 全局变量、静态全局变量和静态局部变量都是静态持续变量,编译器分配固定的内存来存储它们。 全局变量是定义在代码块或函数外部的变量,它的作用域是全局;静态全局变量是用static修饰的全局变量,它的作用域是全局;静态局部变量是定义在代码块或函数内部的静态变量,它的作用域是代码块或函数内部。 int gl原创 2012-09-11 22:53:00 · 2055 阅读 · 0 评论 -
静态成员变量
出自Stephen Prata的《C++ Primer Plus》 静态类成员有一个特点:无论创建了多少对象,程序都只创建一个静态变量副本。也就是说,类的所有对象共享同一个静态成员。 不能在类声明中初始化静态成员变量,这是因为声明描述了如何分配内存,但并不分配内存。对于静态类成员,可以在类声明之外使用单独的语句来进行初始化,这是因为静态类成员是单独存储的,而不是对象的组成部分。原创 2012-09-10 22:19:08 · 1380 阅读 · 0 评论 -
error LNK2019:unresolved external symbol *** referenced in function ***的解决方案
当头文件中声明了一个函数,但是在相应的源文件中却没有对该函数进行定义,则会出现为“解决的外部符号”(unresolved external symbol )错误。另外,当一个函数调用了外部的一个库文件中的函数,但是在当前project的properties中并没有将所依赖的(de转载 2011-10-08 11:31:44 · 997 阅读 · 0 评论