C/C++
lostinai
这个作者很懒,什么都没留下…
展开
-
dlopen与dlsym用法
dlopen和dlsym是用于打开动态链接库中的函数,将动态链接库中的函数或类导入到本程序中:dlopen函数:功能:打开一个动态链接库 包含头文件: #include 函数定义: void * dlopen( const char * pathname, int mode ); 函数描述: 在dlopen的()函数以指定模式打开指定的动态连接库文件,转载 2015-05-06 18:03:54 · 1330 阅读 · 0 评论 -
指针函数与函数指针
http://blog.csdn.net/ameyume/article/details/82208321.指针函数先看下面的函数声明,注意,此函数有返回值,返回值为int *,即返回值是指针类型的。[cpp] view plaincopyint *f(int a, int b); 上面的函数声明又可以写成如下形式:int* f(int a,转载 2015-03-13 16:03:28 · 435 阅读 · 0 评论 -
extern "C"
http://blog.csdn.net/varistor/article/details/11597081简介extern "C" 包含双重含义,从字面上即可得到:首先,被它修饰的目标是“extern”的;其次,被它修饰的目标是“C”的。让我们来详细解读这两重含义。含义(1) 被extern限定的函数或变量是extern类型的:a.extern修饰变量的声明。举例来说,如转载 2014-12-26 13:57:19 · 566 阅读 · 0 评论 -
宏中"#"和"##"的用法
宏中"#"和"##"的用法 一、一般用法 我们使用#把宏参数变为一个字符串,用##把两个宏参数贴合在一起. 用法: #include #include using namespace std; #define STR(s) #s #define CONS(a,b) int(a##e##b) int main() { printf转载 2014-12-26 13:56:35 · 592 阅读 · 0 评论 -
C++中定义自己的头文件
由多个文件组成的程序需要一种方法连接名字的使用和声明,在C++中是通过头文件实现的。头文件一般包括类的定义,extern 变量的声明和函数的声明。使用或定义这些实体的文件要包含适当的头文件。头文件的正确使用有两个好处:保证所有文件使用给定实体的同一声明;当声明需要修改时,只有头文件需要更新。在定义头文件时要注意头文件中所做的声明在逻辑上应该是适于放在一起的,否则,编译头文件会花费较长时间。转载 2014-09-14 13:47:31 · 2476 阅读 · 0 评论 -
C/C++中static关键字作用总结
C/C++中static关键字作用总结转载 2014-06-21 13:50:44 · 577 阅读 · 0 评论 -
C++ Java要点记录
http://blog.csdn.net/banketree/article/details/24935145转载 2014-07-24 17:06:27 · 476 阅读 · 0 评论 -
C++四种cast操作符
C 风格(C-style)强制转型如下:(T) expression 或T(expression) //函数风格(Function-style)两种形式之间没有本质上的不同。对于具有转换的简单类型而言C 风格转型工作得很好。然而,这样的转换符也能不分皂白地应用于类(class)和类的指针。ANSI-C++标准定义了四个新的转换符:reinterpret_cast, stati转载 2014-06-13 19:47:20 · 634 阅读 · 0 评论 -
c/c++经典面试试题及标准答案
c/c++经典面试试题及标准答案下面的问题我想大部分c/c++ 程序员 都遇见过,原文出自林锐博士的《高质量c/c++编程》,这本书非常好,我当初面试时从中受益颇多,不知道大家看过没有,如果没有看过,我特别推荐一下。 一、请填写BOOL , float,指针变量与“零值”比较的 if 语句。(10分) 请写出 BOOL flag与“零值”比较的 if语句。(3分)标准答转载 2014-05-27 17:30:27 · 531 阅读 · 0 评论 -
C++面试题集锦(一)
http://www.cnblogs.com/520zijuan/archive/2013/02/18/2913074.html一、位运算1.1 求下面函数的返回值( 微软) 1 int func(x) 2 { 3 int countx =0; 4 while(x) 5 { 6 countx++; 7转载 2014-05-27 17:27:56 · 543 阅读 · 0 评论 -
C/C++经典面试题
一、找错题1、strcpy试题1:void test1(){ char string[10]; char* str1 = "0123456789"; strcpy( string, str1 );} 试题2:void test2(){ char string[10], str1[10]; int i; for转载 2014-05-27 17:24:39 · 504 阅读 · 0 评论 -
指针函数与函数指针的区别
一、在学习arm过程中发现这“指针函数”与“函数指针”容易搞错,所以今天,我自己想一次把它搞清楚,找了一些资料,首先它们之间的定义:1、指针函数是指带指针的函数,即本质是一个函数。函数返回类型是某一类型的指针 类型标识符 *函数名(参数表) int *f(x,y); 首先它是一个函数,只不过这个函数的返回值是一个地址值。函数返回值必须用同类型的指针变转载 2015-03-13 15:56:47 · 406 阅读 · 0 评论 -
深入浅出--UNIX多进程编程之fork()函数
0前言上周都在看都在学习unix环境高级编程的第八章——进程控制。也就是这一章中,让我理解了unix中一些进程的原理。下面我就主要按照进程中最重要的三个函数来进行讲解。让大家通过阅读这一篇文章彻底明白进程这点事。希望对大家有所帮助。1进程环境 在学习进程之前,一定要了解一下unix的进程环境。系统如何对进程终止,和一个程序启动终止,程序运行的原理等,这些都有助于你理解进转载 2015-04-20 18:03:08 · 471 阅读 · 0 评论 -
LINUX下动态链接库的使用-dlopen dlsym dlclose dlerror【zt】
dlopen基本定义 功能:打开一个动态链接库 包含头文件: #include 函数定义: void * dlopen( const char * pathname, int mode ); 函数描述: 在dlopen的()函数以指定模式打开指定的动态连接库文件,并返回一个句柄给调用进程。使用dlclose()来卸载打开的库。转载 2015-05-06 18:04:57 · 592 阅读 · 0 评论 -
dlopen、dlsym和dlclose的使用和举例
之前用过这三个函数一直没时间整理一下。今天抽时间整理一下。1、函数简介dlopen基本定义功能:打开一个动态链接库 包含头文件: #include 函数定义: void * dlopen( const char * pathname, int mode ); 函数描述: 在dlopen的()函数以指定模式打开指定的动态连接库文件,并转载 2015-05-06 18:04:58 · 546 阅读 · 0 评论 -
如何在多线程中使用JNI?
如果你想了解JNI在如何在多线程下使用如果你在子线程使用JNI时遇到findClass不能找到目标Class,而在主线程下却能找到该Class的问题。或是GetEnv返回NULL的问题如果你想多学点编程技术的话那么,这篇文章就是为你而写的, :)最近工作中遇到这么个问题:c++代码需要调用Android的API来做一个比较耗时的任务,因为有点耗时,希望能有个进度条显示给用户,很自然转载 2015-05-08 17:39:50 · 580 阅读 · 0 评论 -
JNI: API的调用
什么都不说,我们先来看代码:[cpp] view plaincopy#include /* where everything is defined */ ... JavaVM *jvm; /* denotes a Java VM */ JNIEnv *env; /* pointer to native method inter转载 2015-05-08 17:37:43 · 588 阅读 · 0 评论 -
const/typedef/函数指针/回调函数
变量: 左值:(lvalue),左值可以出现在赋值语句的左边或右边 右值:(rvalue),右值只能出现在赋值的右边,不能出现在赋值语句的左边。变量是左值,因此可以出现在赋值语句的左边。数字字面值是右值,因此不能被赋值。int units_sold = 0;double sales_price = 0, total_revenue = 0转载 2015-04-17 12:59:16 · 1168 阅读 · 0 评论 -
typedef函数指针用法
1.简单的函数指针的应用形式1:返回类型(*函数名)(参数表) [cpp] view plaincopychar (*pFun)(int); char glFun(int a){ return;} void main() { pFun = glFun; (*pFun)(2); } 第转载 2015-04-17 13:00:36 · 479 阅读 · 0 评论 -
linux中fork()函数详解
http://blog.csdn.net/jason314/article/details/5640969一、fork入门知识 一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。 一个进程调用fork()函数后,系统转载 2015-04-21 09:17:16 · 459 阅读 · 0 评论 -
fork() 问题
http://blog.csdn.net/yangzhiloveyou/article/details/7985706前两天有人问了个关于Unix的fork()系统调用的面试题,这个题正好是我大约十年前找工作时某公司问我的一个题,我觉得比较有趣,写篇文章与大家分享一下。这个题是这样的:题目:请问下面的程序一共输出多少个“-”?12345转载 2015-04-21 09:22:38 · 451 阅读 · 0 评论 -
从一道面试题谈linux下fork的运行机制
今天一位朋友去一个不错的外企面试linux开发职位,面试官出了一个如下的题目: 给出如下C程序,在linux下使用gcc编译:1234567891011121314#include "stdio.h"#include "sys/types.h"#include "unistd.转载 2015-04-21 09:19:34 · 522 阅读 · 0 评论 -
关于fork()函数的精辟分析
第一贴:cu上关于fork()函数的精辟分析声明:在别人的博客上看到这篇文章,真的很精辟,把问题一下子讲清楚了。所以,特意转贴在此,向各位高人致敬,也向原贴主致谢!本人不改变原贴的风貌。 查看原文 作者:ccf 发表于:2006-04-0117:11:01#include ;转载 2015-04-20 18:03:09 · 468 阅读 · 0 评论 -
全面整理的C++面试题
C++面试题1.是不是一个父类写了一个virtual 函数,如果子类覆盖它的函数不加virtual ,也能实现多态?virtual修饰符会被隐形继承的。private 也被集成,只事派生类没有访问权限而已virtual可加可不加子类的空间里有父类的所有变量(static除外)同一个函数只存在一个实体(inline除外)子类覆盖它的函数不加virtual ,也能实现多转载 2014-05-27 17:21:41 · 462 阅读 · 0 评论 -
C++经典面试题
1,关于动态申请内存答:内存分配方式三种:(1)从静态存储区域分配:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。全局变量,static变量。(2)在栈上创建:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。(3)用malloc或转载 2014-05-27 15:09:38 · 657 阅读 · 0 评论 -
在C++中子类继承和调用父类的构造函数方法
构造方法用来初始化类的对象,与父类的其它成员不同,它不能被子类继承(子类可以继承父类所有的成员变量和成员方法,但不继承父类的构造方法)。因此,在创建子类对象时,为了初始化从父类继承来的数据成员,系统需要调用其父类的构造方法。 如果没有显式的构造函数,编译器会给一个默认的构造函数,并且该默认的构造函数仅仅在没有显式地声明构造函数情况下创建。构造原则如下: 1. 如转载 2014-06-10 11:44:00 · 552 阅读 · 0 评论 -
(排序)用C语言实现的气泡排序(交换排序)
/**气泡排序,通过无序区中相邻元素关键字的比较和位置交换,使关键字最小的元素*如同气泡一样浮出水面。算法是从无序区的最下面的元素开始的,对相邻的关键字进行比较*使关键字小的元素换至关键字较大的元素之上,经过一趟排序,使最小的元素移动到最上端。*接着在剩下的元素找关键字次小的元素,并把它放置第二个位置,如此反复。*/#includevoid BubbleSort(int *a,int原创 2013-03-26 23:20:52 · 1363 阅读 · 0 评论 -
(排序)用C语言实现的希尔排序(插入排序)
/**希尔排序,又叫缩小增量的排序,把元素按照下标一定的增量d进行分组,对每个*分组记录采用直接插入排序的方法进行排序,随着增量的减小,所分成的组的记录越来越多*到增量的值减小到1时,整个数据合成一组,构成一组有序记录,排序完成。*/#includevoid ShellSort(int *a,int len);int main(void){ int a[10]={1222原创 2013-03-26 21:36:59 · 718 阅读 · 0 评论 -
(排序)用C语言实现的直接插入排序
/**直接插入排序第一次是假设数组第一个元素是有序区,剩下的元素是*无序区,每次将无序区的第一个元素与有序区的每一个元素从后向前比较*找到其插入的合适位置,将其插入到有序区*/#includevoid InsertSort(int *a,int len);int main(void){ int a[10]={122,153,155,65879,27,546,56,9,6,原创 2013-03-20 21:56:50 · 727 阅读 · 0 评论 -
(查找)用C语言实现的折半查找
/**折半查找要求数组必须是有序的*这里假设数组是递增有序的,若成功返回记录的下标*失败则返回 -1*/#includeint BInSearch(int *a,int len,int searchNum);int main(void){ int a[10]={12,13,15,35,67,87,686,839,3336,33397}; int index = B原创 2013-03-19 22:26:06 · 707 阅读 · 0 评论 -
(查找)用C语言实现的顺序查找
#includeint SeqSearch(int *a,int len,int searchNum);int main(void){ int a[10]={22,34,54,345,67,87,686,89,6,7}; int index = SeqSearch(a,10, 345); printf("The searcheNum index is %d\n",ind原创 2013-03-19 21:28:06 · 856 阅读 · 0 评论 -
(排序)用C语言实现的简单选择排序(选择排序,其实个人认为也是交换排序)
/**简单选择排序,在当前无序区选出关键字最小的元素,将他与无序区的第一个元素交换*每趟都使有序区增加一个元素,直到所有的元素都排完为止。*/#includevoid SelectSort(int *a,int len);int main(void){ int a[10]={122,53,15,6589,2767,544516,576,9,63,33}; SelectS原创 2013-03-28 21:28:17 · 797 阅读 · 0 评论 -
scanf()和getchar() 使用
问题描述:(分析scanf()和getchar()读取字符) scanf(), getchar()等都是标准输入函数,一般人都会觉得这几个函数非常简单,没什么特殊的。但是有时候却就是因为使用这些函数除了问题,却找不出其中的原因。下面先看一个很简单的程序:程序1: #include int main() {char ch1, ch2;转载 2013-03-10 00:15:00 · 750 阅读 · 0 评论 -
字符指针变量和字符数组的区别
字符数组由若干个元素组成,每个元素中放一个字符,而字符指针变量中存放的地址(字符串第一个字符的地址),决不是将字符串放到字符指针变量中(1)分配内存 设有定义字符型指针变量与字符数组的语句如下: char *pc ,str[100]; 则系统将为字符数组str分配100个字节的内存单元,用于存放100个字符。而系统只为指针变量pc分配4个存储单元,用于存放一个内存单转载 2013-03-29 13:49:54 · 623 阅读 · 0 评论 -
探究二维数组与指针的关系
#include void main() {int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}; int *p; //a是数组行的首地址而a[0]是数组的0行0列的地址,注意区别!!!! //一开始a(这是个地址值)等于a[0](这也是个地址值),都指向元素a[0][0]的地址 //a[0]相当于{a[0][0]原创 2013-03-08 15:00:41 · 641 阅读 · 0 评论 -
判断是否为素数和统计字符串中单词的个数
判断是否为素数#include #include void main() {int m,i,k; scanf("%d",&m); k=sqrt(m); for (i=2;i<=k;i++) if(m%i==0) break; if(i>k) printf("%d is a prime number\原创 2013-03-07 12:27:25 · 780 阅读 · 0 评论 -
(排序)用C语言实现的快速排序(交换排序)
/**快速排序,就是在待排序的n个元素中选取任一个元素(通常取第一个元素)作为基准,*把该元素放入最终的位置上(即归位一个元素),数据序列被该元素划分成两部分,前半部分*小于该元素,后半部分大于该元素,这个过程称为一次快排。以后对所有的两部分分别重复*上述过程,直至每部分只有一个元素或者为空为止。**/#includevoid QuickSort(int *a,int low,in原创 2013-03-27 23:35:24 · 1422 阅读 · 0 评论 -
C语言经典面试题目
http://blog.csdn.net/nixindong1984/article/details/7477378第一部分:基本概念及其它问答题1、关键字static的作用是什么?这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用:1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。2). 在模块内(但在函数体外),一转载 2013-03-27 23:50:50 · 4197 阅读 · 0 评论 -
C/C++ 面试
1.求下面函数的返回值(微软)int func(x) { int countx = 0; while(x) { countx ++; x = x&(x-1); } return countx; } 假定x = 9999。 答案:8思路:将x转化为2进制,看含转载 2014-06-26 14:45:53 · 492 阅读 · 0 评论 -
C/C++ 程序设计员应聘常见面试试题深入剖析
找错题 试题1:void test1(){ char string[10]; char* str1 = "0123456789"; strcpy( string, str1 );} 试题2:void test2(){ char string[10], str1[10]; int i; for转载 2014-06-26 14:10:41 · 534 阅读 · 0 评论