
C&C++
speedboy007
我们是一个充满活力激情的团队,拥有5年以上的移动互联网开发经验,专注于移动手机开发iOS,Android开发和产品设计,帮助客户设计UI,UE和开发产品,高质量的代码和文档,优秀的UI设计和体验
展开
-
How to not show unnecessary zeros when given integers but still have float answers when needed
NSString *str = [NSStringstringWithFormat:@"%g",12.10]; NSLog(@"str = %@",str);输出:2014-04-11 18:55:22.617 Test1[58944:60b]原创 2014-04-11 18:54:49 · 851 阅读 · 0 评论 -
跟我一起写 Makefile
概述——什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会转载 2013-03-27 15:42:58 · 501 阅读 · 0 评论 -
C++ vector 用法汇总
标准库Vector类型使用需要的头文件:#include Vector:Vector 是一个类模板。不是一种数据类型。 Vector是一种数据类型。 一、 定义和初始化Vector v1; //默认构造函数v1为空Vector v2(v1);//v2是v1的一个副本Vector v3(n,i);//v转载 2013-03-18 12:25:17 · 784 阅读 · 0 评论 -
C++ 函数参数的默认值
我们可以赋予函数参数默认值。所谓默认值就是在调用时,可以不写某些参数的值,编译器会自动把默认值传递给调用语句中。关于默认值要注意几点:1.我们通常是将默认值的设置放在声明中而不是定义中。2.不能将实际值传递给引用类型的参数。可以将变量作引用类型参数的默认值,这时变量必须是已经声明且是全局变量。声明函数时,要将类或结构中定义 的静态成员变量作为默认值,若该类或结构还未转载 2013-03-14 13:30:08 · 999 阅读 · 0 评论 -
C中的结构体和C++中结构体的不同
C中的结构体和C++中结构体的不同之处:在C中的结构体只能自定义数据类型,结构体中不允许有函数,而C++中的结构体可以加入成员函数。C++中的结构体和类的异同:一、相同之处:结构体中可以包含函数;也可以定义public、private、protected数据成员;定义了结构体之后,可以用结构体名来创建对象。但C中的结构体不允许有函数; 也就是说在C++当中,结构转载 2013-03-14 13:28:27 · 637 阅读 · 0 评论 -
纯虚函数
目录一、定义二、引入原因三、相似概念编辑本段一、定义纯虚函数是一种特殊的虚函数,它的一般格式如下:class {virtual ()=0;…};在许多情况下,在基类中不能对虚函数给出有意义的实现,而把它声明为纯虚函数,它的实现留给该基类的派生类去做。这就是纯虚函数的作用。纯虚函数可以让类先具有一个操作名称,而没有操转载 2013-03-13 17:32:08 · 690 阅读 · 0 评论 -
初始化列表
目录何谓C++初始化列表构造函数执行阶段为什么使用初始化列表初始化列表成员变量的初始化顺序展开何谓C++初始化列表构造函数执行阶段为什么使用初始化列表初始化列表成员变量的初始化顺序展开编辑本段何谓C++初始化列表与其他函数不同,构造函数除了有名字,参数列表和函数体之外,还可以有初始化列表,初始化列表以冒号开转载 2013-03-14 14:02:24 · 743 阅读 · 0 评论 -
虚析构函数
目录虚析构函数虚析构函数举例编辑本段虚析构函数虚析构函数是为了解决这样的一个问题:基类的指针指向派生类对象,并用基类的指针删除派生类对象。如果某个类不包含虚函数,那一般是表示它将不作为一个基类来使用。当一个类不准备作为基类使用时,使析构函数为虚一般是个坏主意。因为它会为类增加一个虚函数表,使得对象的体积翻倍,还有可能降低其可移植性。所以基转载 2013-03-13 17:46:29 · 580 阅读 · 0 评论 -
C程序编译执行过程
C程序编译执行过程原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://lavasoft.blog.51cto.com/62575/187229 认识C编译执行过程,是C学习的开端。简单说C语言从编码编译到执行要经历一下过程: C源代码编译---->形成目标代码,目标代码是在转载 2013-03-06 10:44:41 · 728 阅读 · 0 评论 -
%02x 格式化符号代表什么
%02x 格式控制: 以十六进制输出,2为指定的输出字段的宽度.如果位数小于2,则左端补0If width is prefixed with 0, zeros are added until the minimum width is reached. If 0 and – appear, the 0 is ignored. If 0 is specified with an int原创 2013-03-27 13:19:50 · 24079 阅读 · 0 评论 -
LINUX SIGNAL信号标志详解
在终端使用kill -l 命令可以显示所有的信号。$kill -l1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR213) SIGPIPE 14) SIGALRM转载 2013-03-28 10:48:01 · 1190 阅读 · 0 评论 -
C++ POD(Plain Old Data)类型
群里发过来一份他们公司的笔试题,看了下,发现里面考了一个判断如下是否为POD类型,没搞明白什么是POD,多方查阅后,发现其实是指一个C风格代码的概念。POD全称Plain Old Data是指C风格的struct结构体定义的数据结构,其中struct结构体中只能定义常规数据类型(不能含有自定义数据类型)。它仅作为被动的收藏的字段值,不使用封包或者other object-oriented特转载 2013-03-28 13:23:42 · 1281 阅读 · 1 评论 -
conflicting types for xx错误
编译libvmi 0.8版本时,出现以下错误:libtool: compile: gcc -DHAVE_CONFIG_H -I. -I.. -I.. -fvisibility=hidden -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -g -O2 -MT libvmi_la-pretty_print.lo -MD -MP -转载 2014-05-07 15:41:05 · 9295 阅读 · 0 评论 -
GCC/GDB学习
GCC学习1、gcc是根据后缀名来区分文件的.c : c语言源文件.a : 目标文件构成的库文件.C/.cc/.cxx : c++源文件.h : 头文件.i : 预处理过的C源文件.ii : 预处理过的C++源文件.o : 编译后的目标文件.s : 汇编语言源代码文件.S : 经过预处理的汇编语言源代码文件2、生成可执行文件四转载 2013-10-16 13:43:00 · 827 阅读 · 0 评论 -
位运算
在实际应用中可以做用户权限的应用002我这里说到的权限管理办法是一个普遍采用的方法,主要是使用到”位运行符”操作,& 位与运算符、| 位或运行符。参与运算的如果是10进制数,则会被转换至2进制数参与运算,然后计算结果会再转换为10进制数输出。003它的权限值是这样的转载 2013-08-21 23:41:06 · 979 阅读 · 0 评论 -
C语言字节对齐
一、概述 我们知道,在缺省情况下,C编译器会为每一个 变量 或者 数据单元 按其自然边界对齐(natural alignment) 的方式分配空间。 本文先介绍 自然边界对齐 方式,接着介绍4种改变C编译器的缺省字节对齐方式的方法 -- 即指定边界对齐。 二、自然边界对齐 什么是 自然边界对齐 呢? 我们知道,在C语言中,结转载 2013-07-20 21:52:00 · 3371 阅读 · 0 评论 -
库函数调用和系统调用的区别
库函数是语言本身的一部分,而系统函数是内核提供给应用程序的接口,属于系统的一部分。 函数库调用是语言或应用程序的一部分,而系统调用是操作系统的一部分。你要确保弄懂“trap(自陷)”这个关键字的含义。系统调用是在操作系统内核发现一个“trap”或中断后进行的(其中系统调用是软中断)。 函数库调用 VS 系统调用函数库调用系统调用转载 2013-06-19 15:04:55 · 799 阅读 · 0 评论 -
C运行时库函数和API函数的区别和联系
C运行时库函数C运行时库函数是指C语言本身支持的一些基本函数,通常是汇编直接实现的。 API函数API函数是操作系统为方便用户设计应用程序而提供的实现特定功能的函数,API函数也是C语言的函数实现的。区别他们之间区别是:API函数是针对操作系统的,C语言运行时函数则是针对C语言本身的。====================================转载 2013-06-19 14:59:46 · 874 阅读 · 0 评论 -
CRT (C run-time library)
一 产生运行时库是程序在运行时所需要的库文件,通常以LIB或DLL形式提供。C运行时库就是C run-time library,诞生于20世纪70年代,是C而非C++语言世界的概念,C程序运行时需要这些库中的函数。C 语言是所谓的“小内核”语言,就其语言本身来说很小(不多的关键字,程序流程控制,数据类型等)。所以,C语言内核开发出来之后,Dennis Ritchie和Brian Ker转载 2013-06-19 14:53:38 · 742 阅读 · 0 评论 -
C运行时库函数
C运行时库函数是指C语言本省支持的一些基本函数,通常是汇编直接实现的。API函数是操作系统提供给用户方便设计应用程序的函数,实现一些特定的功能,API函数也是C语言的函数实现的。他们之间区别是:API函数是针对操作系统的,C语言运行时函数则是针对C语言本身的。C运行时函数严格地说应该是C标准中要求实现的函数 _beginthreadex()只算是MS的扩展吧但是C运行时原创 2013-06-19 13:59:47 · 978 阅读 · 0 评论 -
C/C++ 中访问结构体成员的方法
先看例子: 1#include 2void main(){ 3 typedef struct { 4 int int_field; 5 char char_field; 6 } my_struct; 7 my_struct my_s; 8 my_s.int_fie转载 2013-02-21 17:40:01 · 818 阅读 · 0 评论 -
strstr() 函数
renderer.extension[APPLE_texture_2D_limited_npot] = (0 != strstr((char *)glGetString(GL_EXTENSIONS), "GL_APPLE_texture_2D_limited_npot"));strstr(字符串a, 字符串b)检测 字符串a 是否包含 字符串b返回 字原创 2013-02-20 10:19:25 · 485 阅读 · 0 评论 -
memcmp,memicmp函数
函数原型:extern int memcmp(void *str1, void *str2, unsigned int n)参数说明:str1和str2为指定作比较的字符串,比较两个字符串的前n个字节。 所在库名:#include 函数功能:比较字符串str1和str2在内存区域中的的前n个字节是否相同。 返回说明:当str1str12时,返回值转载 2013-02-20 10:26:30 · 663 阅读 · 0 评论 -
va_start、va_end、va_list的使用
1:当无法列出传递函数的所有实参的类型和数目时,可用省略号指定参数表void foo(...);void foo(parm_list,...); 2:函数参数的传递原理函数参数是以数据结构:栈的形式存取,从右至左入栈.eg:#include void fun(int a, ...){int *temp = &a;temp++;for转载 2012-11-02 16:29:48 · 469 阅读 · 0 评论 -
C++二维数组讲解、二维数组的声明和初始化
我们知道,一维空间是一条线,数学中用一条数轴来表达;二维空间是一个平面,数学中用平面坐标系来表达。那么二维数组又是什么样的呢?线与面我们用一个下标来描述一维数组中的某个元素,就好像在用数描述一条线上的点。而所有的数据都是存储在一条线上。如果我们采用两个下标,就能形成一个平面,犹如一张表格,有行有列,所有的数据就能够存放到表格里。我们把二维数组的两个下标分别称为行下标和列转载 2012-10-23 16:34:04 · 10796 阅读 · 2 评论 -
数组指针的定义
数组名的指针,即数组首元素地址的指针。即是指向数组的指针。 例:int (*p)[10]; p即为指向数组的指针,又称数组指针。编辑本段数组指针与指针数组 数组指针是指向数组首元素的地址的指针,其本质为指针; 指针数组是数组元素为指针的数组(例如 int *p[3],定义了p[0],p[1],p[2]三个指针),其本质为数组。 数组指转载 2012-10-23 16:35:17 · 626 阅读 · 0 评论 -
数组指针的指针操作
先看个例子,有如下语句:int a[10];int *pa = &a[0];pa++;首先指针pa指向a[0]的地址,注意后缀运算符的优先级高于单目运算符,所以是取a[0]的地址,而不是取a的地址。然后pa++让pa指向下一个元素(也就是a[1]),由于pa是int *指针,一个int型元素占4个字节,所以pa++使pa所指向的地址加4,注意不是加1。下面画图理解。从前面的例子原创 2012-10-23 16:22:34 · 690 阅读 · 0 评论 -
位域
有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几 个不同的区域, 并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不同的对象用一个字节的二转载 2012-10-30 21:40:29 · 389 阅读 · 0 评论 -
c++中的值传递,引用传递,指针传递的区别?
实例#include "stdio.h"#include "iostream.h" void DeliByValue(int x);void DeliByReference(int &x);void DeliByPointer(int *x); void main(){ int number=0; DeliByValue(number);转载 2012-09-20 16:56:19 · 758 阅读 · 0 评论 -
C++拷贝构造函数(深拷贝,浅拷贝)
对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a=88;int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。 #include iostream>using namespace std;class CExample {private: int a转载 2012-09-20 23:07:27 · 453 阅读 · 0 评论 -
补码
补码补码(two's complement) 1、在计算机系统中,数值一律用补码来表示(存储)。 主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补 码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。 2、补码与原码的转换过程几乎是相同的。目录补码概述代数加减运算代数解释转载 2012-11-26 18:15:24 · 1437 阅读 · 0 评论 -
位移进制运算
带符号右移 题:-15 >> 2 = -415原码: 00000000 00000000 00000000 00001111 //32位,二进制反码: 11111111 11111111 11111111 11110000 //0变1,1变0补码: 11111111 11111111 11111111 11110001 //最后位加1,-15二进制右移2位:转载 2012-11-26 18:02:53 · 1294 阅读 · 0 评论 -
strcmp, strncmp和memcmp的区别
函数:int memcmp (const void *a1, const void *a2, size_t size) 函数memcmp用于比较字符串s1与s2的前size个字符。 如果两上字符块相同,memcmp将返回0。函数:int strcmp (const char *s1, const char *s2) 这个函数用来比较s1和转载 2013-02-20 10:20:05 · 587 阅读 · 0 评论 -
C与C++动态分配,释放内存的区别
1. malloc()函数 1.1 malloc的全称是memory allocation,中文叫动态内存分配。 原型:extern void *malloc(unsigned int num_bytes); 说明:分配长度为num_bytes字节的内存块。如果分配成功则返回指向被分配内存的指针,分配失败返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。转载 2013-02-16 23:23:27 · 481 阅读 · 0 评论 -
Java编译过程与c/c++编译过程有何不同
你对Java编译过程和编译原理,Java编译程序将java源程序编译成jvm可执行代码--java字节码,并且Java编译器却不将对变量和方法的引用编译为数值引用,也不确定程序执行过程中的内存布局,而是将些符号引用信息保留在字节码中,由解释器在运行过程中创立内存布局,然后再通过查表来确定一个方法所在的地址,这样就有效地保证了java的可移植性和安全性。Java编译原理1转载 2013-02-10 13:23:59 · 586 阅读 · 0 评论 -
malloc 和 calloc的区别?
函数malloc()和calloc()都可以用来动态分配内存空间,但两者稍有区别。malloc()函数有一个参数,即要分配的内存空间的大小:void *malloc(size_t size);calloc()函数有两个参数,分别为元素的数目和每个元素的大小,这两个参数的乘积就是要分配的内存空间的大小。void *calloc(size_t numElements,s原创 2013-01-31 11:27:57 · 573 阅读 · 0 评论 -
Bezier曲线原理及实现代码(c++)
http://blog.163.com/my_appy@126/blog/static/118323971200953061819702/ 一、原理: 贝塞尔曲线于1962年,由法国工程师皮埃尔·贝塞尔(Pierre Bézier)所广泛发表,他运用贝塞尔曲线来为汽车的主体进行设计。贝塞尔曲线最初由 Paul de Casteljau 于1959转载 2013-01-09 11:28:58 · 2648 阅读 · 0 评论 -
iOS 关于枚举的使用
首先要知道的是,枚举值 它是一个整形(int) 并且,它不参加内存的占用和释放枚举定义变量即可直接使用,不用初始化.枚举的定义如下:[csharp] view plaincopytypedef enum { //以下是枚举成员 TestA = 0, TestB,转载 2013-01-05 16:00:09 · 612 阅读 · 0 评论 -
C语言里printf函数格式控制符的完整格式
printf的格式控制的完整格式:% - 0 m.n l或h 格式字符下面对组成格式说明的各项加以说明:①%:表示格式说明的起始符号,不可缺少。②-:有-表示左对齐输出,如省略表示右对齐输出。③0:有0表示指定空位填0,如省略表示指定空位不填。④m.n:m指域宽,即对应的输出项在输出设备上所占的字符数。N指精度。用于说明输出的实型数的小数位数。为指定n时,隐含的精转载 2012-12-14 14:48:43 · 1181 阅读 · 0 评论 -
android NDK jni中c和c++文件报错
如果NDK里的jni中c和c++文件中有些头文件和方法找不到,说明你没有连接c和c++的头文件库原创 2012-11-19 14:00:20 · 2048 阅读 · 0 评论