随笔分类 -  C++

摘要:联系:1,一个通过数组和下标实现的表达式可等价地通过指针和偏移量实现。2,当数组名传递给一个函数时,实际上传递的是该数组第一个元素的地址。区别:1,指针是一个变量,因此,在C语言中,语句pa=a和pa++都是合法的。但数组名不是变量,因此,类似于a=pa和a++形式的语句是非法的。2,数组名代表定义... 阅读全文
posted @ 2014-10-19 17:38 lc_cnblog 阅读(292) 评论(0) 推荐(0)
摘要:C 函数中变化的参数用‘...’ 表示。变化的参数依旧按照C函数传参的规则入栈,即从右往左依次入栈,保证参数从左往右地址依次升高。解析变参的主要思想是:将变参缓冲区像容纳了不同类型的数组(当然实际的数组里的变量类型不可能是不同的)一样对待。获取变参缓冲区首地址,按已知类型进行强转取值,跳过该值,取出... 阅读全文
posted @ 2014-10-17 18:02 lc_cnblog 阅读(946) 评论(0) 推荐(0)
摘要:1.初始化一个链接结构。2.创建一个链接。3.执行查询。4.关闭链接。MYSQL*conn;首先,声明一个conn指针指向一个MYSQL结构体,这个结构体就是一个数据库连接句柄。conn=mysql_init(NULL);函数mysql_init将返回一个链接句柄。if(conn==NULL){printf("Error%u:%s\n",mysql_errno(conn),mysql_error(conn));exit(1);}函数mysql_real_connect建立一个到mysql数据库的链接。调用这个函数要提供链接句柄、主机名、用户、密码等参数,最后四个参数依次是数 阅读全文
posted @ 2014-03-10 11:29 lc_cnblog 阅读(494) 评论(0) 推荐(1)
摘要:转自:http://www.cnblogs.com/welkinwalker/archive/2011/03/10/1979745.html预备知识:无名对象,也叫临时对象。指的是直接由构造函数产生,但是没有被任何符号所引用的对象。例如:string("abc"),这句话产生的就是一个无名对象,这个对象产生以后,没有什么办法使用它。但是对于string str("abc")来说,则产生的是一个有名字的对象,他的名字就是 str。任何引用必须初始化。const(对象)变量只能传递给const引用,不能传递给非const引用。假如说把一个const的对象传递 阅读全文
posted @ 2013-09-18 12:51 lc_cnblog 阅读(497) 评论(0) 推荐(0)
摘要:转自:http://www.cnblogs.com/welkinwalker/archive/2012/03/30/2424844.html#2678295#在英语里面叫做 pound在C语言的宏定义中,一个#表示字符串化;两个#代表连接。#include void quit_command(){ printf("I am quit command\n");} void help_command(){ printf("I am help command\n");} struct command{ char * name; void (*function) 阅读全文
posted @ 2013-09-18 12:49 lc_cnblog 阅读(385) 评论(0) 推荐(0)
摘要:函数模板不支持模板的模板参数。我们经常模板类的参数一般为类型(int,string,class等),如下形式:template class A{};模板类支持模板作为模板的参数。template A >class B{};模板作为模板参数,参数是一个模板类的完整声明。你可以使用类模板内部的任何类型来实例化模板的模板参数。 阅读全文
posted @ 2013-08-07 17:57 lc_cnblog 阅读(515) 评论(0) 推荐(0)
摘要:转:http://www.cnblogs.com/lancidie/archive/2013/04/13/3019596.htmltypedef MyData{ int data1; int data2;} * LPMYDATA;const LPMYDATA pData = getData();// do sth elsepData = getNewData(); // compile error2、分析: a、首先我们应该都知道const的使用方法,一些面试题也都喜欢考察这个问题,比如 const char* 和 char const* 和char * const有什... 阅读全文
posted @ 2013-08-06 16:33 lc_cnblog 阅读(290) 评论(0) 推荐(0)
摘要:链接:http://gcc.gnu.org/onlinedocs/gcc/Function-Names.html#Function-NamesGCC provides three magic variables that hold the name of the current function, as a string. The first of these is __func__, which is part of the C99 standard:The identifier __func__ is implicitly declared by the translator as if, 阅读全文
posted @ 2013-08-02 09:54 lc_cnblog 阅读(224) 评论(0) 推荐(0)
摘要:template void advance (InputIterator& it, Distance n);迭代器辅助函数。使迭代器it偏移n,其中n为整数。#include // std::cout#include // std::advance#include // std::listint main () { std::list mylist; for (int i=0; i::iterator it = mylist.begin(); std::advance (it,5); std::cout << "The sixth elemen... 阅读全文
posted @ 2013-07-17 17:00 lc_cnblog 阅读(11476) 评论(1) 推荐(1)
摘要:mode 可以使 R_OK,W_OK,X_OK(是否可执行),F_OK(文件是否存在)的掩码。成功返回0,失败返回-1 阅读全文
posted @ 2013-03-11 17:19 lc_cnblog 阅读(705) 评论(0) 推荐(0)
摘要:int sprintf(char *str, const char *format, ...);windows平台下线程安全的格式化字符串函数sprint_s并非标准C函数,因此linux下无法使用,但可以使用snprintf函数代替。int snprintf(char *str, size_t size, const char *format, ...);最多从源串中拷贝n-1个字符到目标串中,然后再在后面加一个0。所以如果目标串的大小为n的话,将不会溢出。函数返回值: 若成功则返回存入数组的字符数,若编码出错则返回负值。snprintf 规定了写入str的最大字节数,防止缓冲区溢出 阅读全文
posted @ 2013-03-11 17:00 lc_cnblog 阅读(411) 评论(0) 推荐(0)
摘要:头文件 zlib.hint compress (Bytef * dest , uLongf * destLen, constt Bytef * source , uLongf sourceLen)zib的压缩函数,将source处sourceLen个字节进行压缩,放到dest指向的内存,把压缩后的长度存入destLen指向的地址中。调用前destLen表示dest缓冲区,调用后destLen表示压缩后的长度。调用前需指定destLen。return: Z_OK 成功, Z_MEM_ERROR 内存不足 Z_BUF_ERROR dest的缓冲区太小int uncompress(Bytef ... 阅读全文
posted @ 2013-03-11 16:50 lc_cnblog 阅读(3386) 评论(0) 推荐(0)
摘要:条件变量是对全局变量使用的同步机制,一个线程等待条件的成立,另一个线程适当时使条件成立。条件变量的使用很容易造成等待的线程一直休眠下去,要保证等待条件成立的线程在最后一次成立后能结束。可以将条件变量理解成一种全局变量。对它使用时总是先加互斥锁。pthread_cond_t cond 定义了cond的条件变量。初始化有两种方式:静态的和动态的。静态的初始化用PTHREAD_COND_INITIALIZER。动态的初始化则使用pthread_cond_init(&cond, NULL); 第二个参数表示cond的属性,linux没有实现,所以设为NULL销毁用pthread_cond_de 阅读全文
posted @ 2013-03-01 19:42 lc_cnblog 阅读(711) 评论(0) 推荐(0)
摘要:来源网络:View Code #include <unistd.h>#include <stdlib.h>#include <sys/types.h>#include <iostream>int main(){ int x = 5; pid_t pid = fork (); if (0 == pid) { std::cout << "pid = " << pid << std::endl; x = 6; std::cout << "x = " << 阅读全文
posted @ 2013-03-01 12:46 lc_cnblog 阅读(2560) 评论(0) 推荐(0)
摘要:主要用于多任务环境中,一个可重入的函数简单来说就是可以被中断的函数,也就是说,可以在这个函数执行的任何时刻中断它,转入OS调度下去执行另外一段代码,而返回控制时不会出现什么错误;而不可重入的函数由于使用了一些系统资源,比如全局变量区,中断向量表等,所以它如果被中断的话,可能会出现问题,这类函数是不能运行在多任务环境下的。也可以这样理解,重入即表示重复进入,首先它意味着这个函数可以被中断,其次意味着它除了使用自己栈上的变量以外不依赖于任何环境(包括static),这样的函数就是purecode(纯代码)可重入,可以允许有该函数的多个副本在运行,由于它们使用的是分离的栈,所以不会互相干扰。如果确实 阅读全文
posted @ 2013-02-28 20:00 lc_cnblog 阅读(288) 评论(0) 推荐(0)
摘要:网上摘抄:更改C编译器的缺省字节对齐方式在缺省情况下,C编译器为每一个变量或是数据单元按其自然对界条件分配空间。一般地,可以通过下面的方法来改变缺省的对界条件: · 使用伪指令#pragma pack (n),C编译器将按照n个字节对齐。 · 使用伪指令#pragma pack (),取消自定义字节对齐方式。另外,还有如下的一种方式: · __attribute((aligned (n))),让所作用的结构成员对齐在n字节自然边界上。如果结构中有成员的长度大于n,则按照最大成员的长度来对齐。 · __attribute__ ((packed)),取消结构 阅读全文
posted @ 2013-02-28 13:40 lc_cnblog 阅读(221) 评论(0) 推荐(0)
摘要:原文作者:戎亚新摘要:一直以来都觉得printf似乎是c语言库中功能最强大的函数之一,不仅因为它能格式化输出,更在于它的参数个数没有限制,要几个就给几个,来者不拒。printf这种对参数个数和参数类型的强大适应性,让人产生了对它进行探索的浓厚兴趣。 关键字:printf, 可变参数 1. 使用情形 int a =10;double b = 20.0;char *str = "Hello world";printf("begin print\n");printf("a=%d, b=%.3f, str=%s\n", a, b, str); 阅读全文
posted @ 2013-02-28 11:19 lc_cnblog 阅读(903) 评论(0) 推荐(0)
摘要:url:http://blog.163.com/xychenbaihu@yeah/blog/static/1322296552010102533746418/引入pthread_equal的原因:在线程中,线程ID的类型是pthread_t类型,由于在Linux下线程采用POSIX标准,所以,在不同的系统下,pthread_t的类型是不同 的,比如在ubuntn下,是unsigned long类型,而在solaris系统中,是unsigned int类型。而在FreeBSD上才用的是结构体指针。所以不能直接使用==判读,而应该使用pthread_equal来判断。技术在发展,技术实现有不同,一 阅读全文
posted @ 2013-02-26 10:19 lc_cnblog 阅读(342) 评论(0) 推荐(0)
摘要:这两者都是为了防止文件被包含多次。但是有些细微的区别:1,来源的区别:#pragma once 是编译系统相关的,由编译器提供。而#ifndef ...#define ... #endif 是c/c++的宏定义,是语言相关的。2,用法效果的区别:#pragma once 仅用来防止一个文件被包含多次。 而如果一份文件不小心有多个一模一样的备份,#ifndef组合可以避免它们都被包含进来。因为文件中的宏名称是一样的。 但#pragma once只能保证当前文件被包含的次数。 阅读全文
posted @ 2013-02-26 09:42 lc_cnblog 阅读(254) 评论(0) 推荐(0)
只有注册用户登录后才能阅读该文。
posted @ 2013-01-28 11:38 lc_cnblog 阅读(6) 评论(0) 推荐(0)