C/C++基础
雷古拉斯
专注近场通信
展开
-
Android静态编译LOCAL_FORCE_STATIC_EXECUTABLE
一、需求在recovery系统下没有动态链接库,需要可执行文件采取静态编译。二、Android系统中强制静态编译elf文件的宏LOCAL_FORCE_STATIC_EXECUTABLE原创 2015-08-06 10:58:12 · 2419 阅读 · 0 评论 -
C/C++开发中遇到的时间Time计算
一、毫秒级时间获取原创 2014-07-10 14:49:06 · 1746 阅读 · 0 评论 -
Linux程序运行跟踪trace
一、源程序1.源码#include #include int main(){ int i; printf("TK------>>>sizeof i is %d\n",sizeof i); char *p = NULL; strcpy(p,"tankai"); printf("p is %s\n",p); return 0;}原创 2014-04-08 10:53:12 · 13155 阅读 · 0 评论 -
C++类的成员函数如何作为回调函数?
类的成员函数隐含了个this指针参数,因此、除了类的静态成员函数以外,普通方法不可以作为参数传递。原创 2014-06-13 16:50:49 · 1225 阅读 · 0 评论 -
IP地址匹配
一、如何提高编程能力?1.对于简单问题:例如排序、查找,约瑟夫环、回文数、素数、润年,单向链表创建、删除、插入、查找、逆序,子字符串查找、系统字符处理函数的自己编写等;这部分严格要求自己,在没有机器调试时、能够在纸质上写出,并能保证程序健壮性和尽可能的提高效率(包括内存使用率和性能)。2.对应牵扯到工程问题:在常用IDE包括vc6.0c,Linux下的gcc(vc6.0的c语法和规则可能更原创 2014-05-22 08:49:23 · 2300 阅读 · 0 评论 -
基础面试
一、查找子字符串原创 2014-05-20 08:16:47 · 789 阅读 · 0 评论 -
如何在C++中使用共享库的动态加载
==================原创 2014-06-12 08:41:54 · 1973 阅读 · 0 评论 -
C++之itertor迭代器
一、迭代器简介 迭代器是一种检查容器内元素并遍历元素的数据类型。 标准库为每一种标准容器定义了一种迭代器类型。迭代器类型提供了比下标操作更通用化的方法:所有的标准库容器都定义了相应的迭代器类型,而只有少数的容器支持下标操作(例如list链表模板没有支持下标操作)。 各容器类都定义了自己的itertor类型,用于访问容器内的元素。换句话说:每个容器都定义了一个名为itertor的类原创 2014-07-01 09:18:02 · 4030 阅读 · 0 评论 -
C++关键字分析系列
C++之itertor迭代器c++之operator运算符重载原创 2014-07-01 09:48:52 · 755 阅读 · 0 评论 -
ffos中WebAPI回调不能执行
原因:没有在主线程调用导致!一、如何查看1.直接在程序中上下文打印root@android:/ # TVMSFmanagertest >>>[tv_display] VideoHole is 0 0 1919 1079>>>[tv_display] VideoAxis is 0 0 191原创 2014-06-17 14:45:42 · 1053 阅读 · 0 评论 -
C++模板与泛型编程
==============原创 2014-07-01 09:52:37 · 941 阅读 · 0 评论 -
c++之operator运算符重载
转载:http://blog.chinaunix.net/uid-21411227-id-1826759.html一、实例1.用成员函数来重载转载 2014-06-23 10:33:36 · 3756 阅读 · 0 评论 -
“不完全类型”指在C++中有声明但又没有定义的类型
用delete删除一个只有声明但无定义的类型的指针,是危险的。这通常导致无法调用析构函数(包括对象本身的析构函数、成员/基类的析构函数),从而泄露资源。示例代码:引用:class C; // 在另一个cpp文件中定义C* createC(); // 在另一个cpp文件中定义int main() { C* p = c转载 2014-06-19 16:44:55 · 1249 阅读 · 0 评论 -
C语言汉字gbk转utf-8
一、注意事项1.请注意汉字内码和具体某个编码格式下的汉字的区别!!!!该问题导致我们程序调试了差不多一整天!2.另外库函数iconv会把传入的参数指针移位,这是正常的、轻不要认为是自己程序有问题。3.我的终端是utf-8格式,对于其他编码不能显示。二、看看code1.test.c#include #include #include int code_convert(原创 2013-07-20 02:15:48 · 18112 阅读 · 0 评论 -
献给迷茫的C语言爱好者
一 ,怎样学习C语言 很多人对学习C语言感到无从下手,经常问我同一个问题:究竟怎样学习C语言?我是一个教师,已经开发了很多年的程序,和很多刚刚起步的人一样,学习的第一个计算机语言就是C语言。经过这些年的开发,我深深的体会到C语言对于一个程序设计人员多么的重要,如果不懂C语言,你想写底层程序这几乎听起来很可笑,不懂C语言,你想写出优秀高效的程庌輌这简直就是天方夜谭。为什么C语言如转载 2014-12-10 16:35:00 · 2144 阅读 · 0 评论 -
C语言关键字分析系列
一、C关键字分类C语言一共有32个关键字,具体分类如下:1.数据类型关键字,12个char,short,int,long,singed,unsigned,float,double,enum,union,struct,void2.控制语句关键字,12个for,do,while,break,continue;if,else,goto;switch,case,default,retu原创 2014-04-04 11:25:12 · 946 阅读 · 0 评论 -
C语言内存管理
========原创 2014-12-10 08:29:14 · 989 阅读 · 0 评论 -
有关free()函数的一个问题
1.源码#include #include #include int main(){ char *test1; test1 = (char *)malloc(8); printf("test1 addr is 0x%lx\n",test1); strncpy(test1,"adbdefg",7); //test1 = "adbdefg"; printf("tes原创 2012-12-21 15:39:31 · 1596 阅读 · 0 评论 -
《C关键字分析》之const
const也许应该被替换为readonly原创 2014-12-11 08:48:58 · 990 阅读 · 0 评论 -
《C关键字分析》之sizeof,enum、union和struct
一、关于sizeof1.它是C的关键字,不是函数;2.一般用法为sizeof 变量或sizeof(数据类型);后边这种写法会让人误认为是函数,但这种写法是为了防止和C中类型修饰符(static、const、extern等)冲突。二、demo1.源码test.c#include int main(){ int i; printf("sizeof i is %d\原创 2013-10-10 10:27:50 · 2145 阅读 · 0 评论 -
C面试常用基础题目
一、冒泡排序#include int paixv(int* a,int num){ int i = 0; int j = 0; int temp = 0; for(i = 0;i < num;i++) { for(j = i; j < num; j++) { if(a[i] >= a[j]) { temp = a[i];原创 2014-12-05 11:29:02 · 1151 阅读 · 0 评论 -
C++之include<iostream>与include<iostream.h>
一、使用说明#include是标准的C++头文件,任何符合标准的C++开发环境都有这个头文件。在旧的标准C++中,使用#include但在新标准中,用#include,而且在VC中编程的同时要注意要添加:using namespace std;二、C与C++关系看该问题 和是不一样,前者没有后缀,实际上,在你的编译器include文件夹里面可以看到,二者是两个文件,打原创 2014-12-05 10:21:39 · 3108 阅读 · 0 评论 -
Linux下程序的编译链接及装载(解释)运行
1.ubuntu下helloword编译连接过程分析《C编译原理》ubuntu下helloword编译连接过程分析2.ubuntu下helloworld程序加载运行分析《C编译原理》ubuntu下helloworld程序加载运行分析原创 2014-03-20 13:40:09 · 1383 阅读 · 0 评论 -
C语言格式化输入输出函数使用
1.Demo.c#include int main(){ int a[4]; printf("please input:"); ////////////////////////////////////////////////// scanf("%d.%d.%d.%d",&a[0],&a[1],&a[2],&a[3]); int i = 0; for(;i < 4;原创 2014-12-05 14:37:04 · 1398 阅读 · 0 评论 -
砝码称重与大小交换问题
=================原创 2014-06-12 10:00:40 · 1416 阅读 · 0 评论 -
《C++特性》之引用类型
一、首先,我们先看一个例子:test.cpp#include int main(){ int b; b = 5; int &a = b; printf("a is %d\n",a); a = 10; printf("b is %d\n",b); return 0;}g++ -o test test.cpp输出结果:a is 5b is 10原创 2012-11-15 16:41:58 · 1090 阅读 · 0 评论 -
《C预处理》之#ifndef
1.test.h#ifndef TEST_H#define TEST_H/*这里只是说明,在头文件中定义变量是不被推荐的。*/int a = 0;int b = 0;int c = 0;int test();#endif注意:#ifndef只能防止.h文件被同一个C文件重复包含;不能保证两个C文件对其两次包含,所以如果被一个模块(编译成一个so或bin)中两个c同时包含、并且原创 2013-01-22 17:50:21 · 1218 阅读 · 0 评论 -
《C预处理》linux kernel中一种宏定义在函数实现中的用法
1.#include void test(int *a);#define mytest(a) test(a)int main(){ int a; a = 3; printf("a is %d\n",a); test(&a); printf("a is %d\n",a);}void mytest(int *a){ *a = 2;}gcc -原创 2013-04-28 17:11:48 · 1121 阅读 · 0 评论 -
《C关键字分析》类型修饰符之static
======================================================================================================================================一、静态全局变量 限定变量作用域;二、静态局部变量 只被初始化一次;原创 2012-11-06 13:29:45 · 733 阅读 · 0 评论 -
Linux C中标准输入输出及重定向
======================================================================================================================================1.关于backspace getchar从标准输入的缓冲区读字符,backspace根本进不了缓冲区。所以应该使用无缓冲原创 2012-11-16 17:01:59 · 4362 阅读 · 0 评论 -
《C编译原理》程序的加载地址与运行地址
一、程序的加载地址程序被加载到RAM中的地址;这个不能由编译器决定、也就是不能由编译参数决定!由该模块的调用者决定!因为程序在nandflash中不能运行,所以需要加载到RAM中。一般我们必须在运行该程序前,将程序加载到运行地址处。即在代码设计时:在跳转至运行地址变量前,必须先完成代码搬运部分工作。二、程序的运行地址这个地址可以由编译器的编译参数来决定。目标文件中各原创 2013-05-10 10:20:41 · 2677 阅读 · 0 评论 -
《C特殊符号》转义字符‘\’的使用
1.源代码test.c#include #include #include #include int main(){ char a[10] = "\\xcc"; //表示4个字符,分别是:\ x c c printf("a is %s\nstrlen(a) is %d\n",a,strlen(a)); char b[10] = "\xcc"; //表示1个字符,是一个十原创 2013-07-20 18:22:07 · 5261 阅读 · 0 评论 -
《C关键字分析》利用联合体判断处理器存储模式
一、关于联合体的说明 联合体的出现是为了节省内存空间;联合体分配的内存大小是其成员变量中最大变量的大小,而不像结构体是各个成员变量内存的总和。 利用联合体成员变量共用内存的特点,我们可以判断处理器的大小端模式。二、demo1.源码test.c#include int checkSystem(){ union check{ int i; ch原创 2013-10-10 09:45:17 · 1113 阅读 · 0 评论 -
《C编译原理》自己写C语言编译器
一个编译器至少需要包含如下几个部分:词法分析器:对源代码的字符串进行扫描和分解,根据构词法将字符流转换成单词流。语法分析器:根据文法规则把单词序列分解成各类语法单位,识别出一个一个句子。语义分析器:根据前边产生的一个个句子,按语言的语义进行翻译,产生四元式或三元式等中间语言。优化器:把中间代码进行转换,以产生更加高效的目标代码。代码生成器:把中间代码转换成汇编指令或可重定位的目原创 2013-05-03 09:57:08 · 4152 阅读 · 0 评论 -
《C预处理》Linux内核中可变参数宏的用法
一、#与##1.##符号用作一个预处理运算符,它可以把语言符号转换成字符串。eg:x是一个宏参数,那么#x可以把参数名转换成相应的字符串,这个过程叫字符串化。test1.c#include #define PSQR(x) printf("the square of" #x "is %d.\n",(x)*(x))int main(void){ int y =4;原创 2013-09-25 15:29:08 · 4630 阅读 · 0 评论 -
C编译器、连接器与可执行机器码文件
有些人写C/C++(以下假定为C++)程序,对unresolved external link或者duplicated external simbol的错误信息不知所措(因为这样的错误信息不能定位到某一行)。或者对语言的一些部分不知道为什么要(或者不要)这样那样设计。了解本文之后,或许会有一些答案。 首先看看我们是如何写一个程序的。如果你在使用某种IDE(Visual Studio,El转载 2013-05-09 17:41:58 · 1505 阅读 · 0 评论 -
函数的传值与传址
======================================================================================================================================原创 2013-01-29 13:53:30 · 721 阅读 · 0 评论 -
void指针强转结构体指针问题
====================================================================================================================================1.程序,test.c#include #include typedef unsigned long u32; //6原创 2012-12-06 10:19:32 · 10492 阅读 · 0 评论 -
《C编译原理》ubuntu下helloword编译连接过程分析
一、源程序vi hello.c#include int main(){ printf("helloworld!\n"); return 0;}二、编译及连接gcc -v hello.c -o hello...... /usr/lib/gcc/x86_64-linux-gnu/4.4.6/cc1 -quiet -v -imultilib . -imul原创 2013-05-13 14:13:49 · 1299 阅读 · 0 评论 -
《C编译原理》共享库的动态加载和静态加载
======================================================================================================================================原创 2012-11-09 15:58:09 · 2200 阅读 · 0 评论