易截截图软件、单文件、免安装、纯绿色、仅160KB
热门标签: c c# c++ asp asp.net linux php jsp java vb Python Ruby mysql sql access Sqlite sqlserver delphi javascript Oracle ajax wap mssql html css flash flex dreamweaver xml
 最新文章 : c++

C的函数指针实现C++的多态

C的函数指针很强大,用好了才是C语言的高手。像Gtk中的回调函数的使用,都体现了函数指针的强大威力。
struct Point{
int x, y;
};
/*Shape*/
/*----------------------------------------------------------------*/
struct Shape {
struct Methods* methods;
};

struct Methods {//将C++对应类中所有成员函数封装到一个结构体里面
float (*getCircle)(Shape * shape);
float (*getArea)(Shape * shape);
void (*draw)(Shape * shape);
void (*move)(Shape * shape);
};
////////////////C++ Counterpart of above code//////////////////
class Shape {
public:
virtual float getCircle() = 0;
virtual float getArea() = 0;
virtual void draw() = 0;
virtual void move() = 0;
};
///////////////////////////////////////////////////////////////
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/*---------------------------------------- ......

C的函数指针实现C++的多态

C的函数指针很强大,用好了才是C语言的高手。像Gtk中的回调函数的使用,都体现了函数指针的强大威力。
struct Point{
int x, y;
};
/*Shape*/
/*----------------------------------------------------------------*/
struct Shape {
struct Methods* methods;
};

struct Methods {//将C++对应类中所有成员函数封装到一个结构体里面
float (*getCircle)(Shape * shape);
float (*getArea)(Shape * shape);
void (*draw)(Shape * shape);
void (*move)(Shape * shape);
};
////////////////C++ Counterpart of above code//////////////////
class Shape {
public:
virtual float getCircle() = 0;
virtual float getArea() = 0;
virtual void draw() = 0;
virtual void move() = 0;
};
///////////////////////////////////////////////////////////////
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/*---------------------------------------- ......

嵌入式C/C++面试题汇总解答(II)

 (本文源自http://www.weste.net/2006/2-20/13432127659.html )  
许多面试题看似简单,却需要深厚的基本功才能给出完美的解答。企业要求面试者写一个最简单的strcpy函数都可看出面试者在技术上究竟达到了怎样的程度,我们能真正写好一个strcpy函数吗?我们都觉得自己能,可是我们写出的strcpy很可能只能拿到10分中的2分。读者可从本文看到 strcpy函数从2分到10分解答的例子,看看自己属于什么样的层次。此外,还有一些面试题考查面试者敏捷的思维能力。
  分析这些面试题,本身包含很强的趣味性;而作为一名研发人员,通过对这些面试题的深入剖析则可进一步增强自身的内功。
找错题
试题1 :
void test1()
{
 char string[10];
 char* str1 = "0123456789";
 strcpy( string, str1 );
}
 

试题2 :
void test2()
{
 char string[10], str1[10];
 int i;
 for(i=0; i<10; i++)
 {
   str1[i] = 'a';
 }
 strcpy( string, str1 );
}

试题3 :
void test3(char* str1)
{
 char string[10];
 if( strlen( str1 ) <= 10 )
 {
  strcpy( string, str1 );
 }
}
解答:
  试题1字符串str1需要11个字 ......

嵌入式C/C++面试题汇总解答(II)

 (本文源自http://www.weste.net/2006/2-20/13432127659.html )  
许多面试题看似简单,却需要深厚的基本功才能给出完美的解答。企业要求面试者写一个最简单的strcpy函数都可看出面试者在技术上究竟达到了怎样的程度,我们能真正写好一个strcpy函数吗?我们都觉得自己能,可是我们写出的strcpy很可能只能拿到10分中的2分。读者可从本文看到 strcpy函数从2分到10分解答的例子,看看自己属于什么样的层次。此外,还有一些面试题考查面试者敏捷的思维能力。
  分析这些面试题,本身包含很强的趣味性;而作为一名研发人员,通过对这些面试题的深入剖析则可进一步增强自身的内功。
找错题
试题1 :
void test1()
{
 char string[10];
 char* str1 = "0123456789";
 strcpy( string, str1 );
}
 

试题2 :
void test2()
{
 char string[10], str1[10];
 int i;
 for(i=0; i<10; i++)
 {
   str1[i] = 'a';
 }
 strcpy( string, str1 );
}

试题3 :
void test3(char* str1)
{
 char string[10];
 if( strlen( str1 ) <= 10 )
 {
  strcpy( string, str1 );
 }
}
解答:
  试题1字符串str1需要11个字 ......

emacs 快捷键(包括C/C++模式)

符号
      C-  意思是按住 Ctrol 键
M-   意指 Meta 键 (键盘上若无Meta 键,则可以ALT ESC 键来取而代之)
DEL  意指退格键 (不是 删除(Delete) key)
RET  意指回车键
SPC  意指空格键
ESC  意指Escape键
TAB  意指Tab键
像 "C-M-" (or "M-C") 这样连在一起的意味着同时按住 Control 和 Meta 键不放.
用方向键
   C-p 、 C-b 、 C-f 和 C-n 这四个命令。它们的功能和方向键是一样的,如下图所示:
            上一行 C-p (Prev line)
                          .
                          .
                         ......

emacs 快捷键(包括C/C++模式)

符号
      C-  意思是按住 Ctrol 键
M-   意指 Meta 键 (键盘上若无Meta 键,则可以ALT ESC 键来取而代之)
DEL  意指退格键 (不是 删除(Delete) key)
RET  意指回车键
SPC  意指空格键
ESC  意指Escape键
TAB  意指Tab键
像 "C-M-" (or "M-C") 这样连在一起的意味着同时按住 Control 和 Meta 键不放.
用方向键
   C-p 、 C-b 、 C-f 和 C-n 这四个命令。它们的功能和方向键是一样的,如下图所示:
            上一行 C-p (Prev line)
                          .
                          .
                         ......

解读复杂的C/C++声明[入门篇]

复杂的C\C++声明,常出现在学校的考卷,面试题或是牛人老外的代码中。
我们在实际的工作中,应该尽可能少使用复杂的声明。复杂的声明,会让阅读您代码的人很是郁闷。
虽然不使用这种复杂的声明,但还是应该把将如何解析这种复杂的声明的方法记在心中。
所以,我把这种方法记录下来,以备不时之需。
入门题
1) 一个整型数(An integer)
答:int n
2) 一个指向整型数的指针(A pointer to an integer)
答:int *p
3) 一个指向指针的的指针,它指向的指针是指向一个整型数(A pointer to a pointer to an integer)
答:int **p
4) 一个有10个整数的数组(An array of 10 integers)
答:int a[10]
5) 一个有着10个元素的数组,每个元素都是一个指向整形数的指针(An array of 10 pointers to integers)
答:从第1题至第4题,都是一眼能看出来的。第5题就需要注意。
我将第5题的题目按如下解读:
a.从外往内进行解读
b.有一个10个元素的数组:typedef P (a[10])
c.每个元素都是一个指向整形数的指针:int *P
d.从下往上进行嵌套~
e.所以答案为int *(a[10]) = int *a[10]
6) 一个指向有10个整型数数组的指针(A pointer to an array of ......

解读复杂的C/C++声明[入门篇]

复杂的C\C++声明,常出现在学校的考卷,面试题或是牛人老外的代码中。
我们在实际的工作中,应该尽可能少使用复杂的声明。复杂的声明,会让阅读您代码的人很是郁闷。
虽然不使用这种复杂的声明,但还是应该把将如何解析这种复杂的声明的方法记在心中。
所以,我把这种方法记录下来,以备不时之需。
入门题
1) 一个整型数(An integer)
答:int n
2) 一个指向整型数的指针(A pointer to an integer)
答:int *p
3) 一个指向指针的的指针,它指向的指针是指向一个整型数(A pointer to a pointer to an integer)
答:int **p
4) 一个有10个整数的数组(An array of 10 integers)
答:int a[10]
5) 一个有着10个元素的数组,每个元素都是一个指向整形数的指针(An array of 10 pointers to integers)
答:从第1题至第4题,都是一眼能看出来的。第5题就需要注意。
我将第5题的题目按如下解读:
a.从外往内进行解读
b.有一个10个元素的数组:typedef P (a[10])
c.每个元素都是一个指向整形数的指针:int *P
d.从下往上进行嵌套~
e.所以答案为int *(a[10]) = int *a[10]
6) 一个指向有10个整型数数组的指针(A pointer to an array of ......

C/C++ HOOK API(原理深入剖析之

9月都快结束了,之前一直忙到写自己的东西加上上班。基本没有时间研究下汇编和C C++方面的感兴趣的东西。再怎么说嘛,9月还是得写一篇撒,以后每月至少一篇吧。给自己定了,希望大家监督。嘿嘿!
这篇文章就来谈谈平常很常见的HOOK技术,这里呢。写得比较简单,方法很多。只讲原理!希望大鸟们别吐我口水哈 - -。好!切入正题。
首先是概念吧。什么是钩子(HOOK)?
钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window消息或特定事件。
钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。
这上面只是一个概念,对它有所了解而已。上面主要应用在Windows消息处理机制里面的一个解释。这里我只是单纯的谈谈拦截我们常用的LoadLibraryA加载这个函数。让我们的程序或者目标程 ......

C/C++ HOOK API(原理深入剖析之

9月都快结束了,之前一直忙到写自己的东西加上上班。基本没有时间研究下汇编和C C++方面的感兴趣的东西。再怎么说嘛,9月还是得写一篇撒,以后每月至少一篇吧。给自己定了,希望大家监督。嘿嘿!
这篇文章就来谈谈平常很常见的HOOK技术,这里呢。写得比较简单,方法很多。只讲原理!希望大鸟们别吐我口水哈 - -。好!切入正题。
首先是概念吧。什么是钩子(HOOK)?
钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window消息或特定事件。
钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。
这上面只是一个概念,对它有所了解而已。上面主要应用在Windows消息处理机制里面的一个解释。这里我只是单纯的谈谈拦截我们常用的LoadLibraryA加载这个函数。让我们的程序或者目标程 ......

linux 很不错下的C/C++开发开发环境 mono

      今天装好了monodevelop,本来是想用来C#的,见他也支持C/C++开发,于是试了一下,感觉很不错,终于找到了linux下一个比较满意的C++开发环境。
      以前写C++都是在Eclipse下写的,但Eclipse启动慢,配置麻烦,和java一起用的时候很容易出错,用的很不爽,当然更不喜欢文本编辑。  
     monodevelop用起来界面很简洁,很干净,用gcc  g++作为编译器,用起来很方便。功能上似乎没有VC++那么强大,但绝对够用了。
写一个helloworld
如果没有安装gcc g++
yum install gcc  gcc-c++
monodevelop 欢迎界面
new ->solution
new ->file
选择 :空C++源文件
build ----- run
......

linux 很不错下的C/C++开发开发环境 mono

      今天装好了monodevelop,本来是想用来C#的,见他也支持C/C++开发,于是试了一下,感觉很不错,终于找到了linux下一个比较满意的C++开发环境。
      以前写C++都是在Eclipse下写的,但Eclipse启动慢,配置麻烦,和java一起用的时候很容易出错,用的很不爽,当然更不喜欢文本编辑。  
     monodevelop用起来界面很简洁,很干净,用gcc  g++作为编译器,用起来很方便。功能上似乎没有VC++那么强大,但绝对够用了。
写一个helloworld
如果没有安装gcc g++
yum install gcc  gcc-c++
monodevelop 欢迎界面
new ->solution
new ->file
选择 :空C++源文件
build ----- run
......

linux 很不错下的C/C++开发开发环境 mono

      今天装好了monodevelop,本来是想用来C#的,见他也支持C/C++开发,于是试了一下,感觉很不错,终于找到了linux下一个比较满意的C++开发环境。
      以前写C++都是在Eclipse下写的,但Eclipse启动慢,配置麻烦,和java一起用的时候很容易出错,用的很不爽,当然更不喜欢文本编辑。  
     monodevelop用起来界面很简洁,很干净,用gcc  g++作为编译器,用起来很方便。功能上似乎没有VC++那么强大,但绝对够用了。
写一个helloworld
如果没有安装gcc g++
yum install gcc  gcc-c++
monodevelop 欢迎界面
new ->solution
new ->file
选择 :空C++源文件
build ----- run
......
总记录数:969; 总页数:162; 每页6 条; 首页 上一页 [147] [148] [149] [150] 151 [152] [153] [154] [155] [156]  下一页 尾页
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号