易截截图软件、单文件、免安装、纯绿色、仅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++混用

Yes, C和C++混用的确是natural,毕竟绝大多数C++学习者都从C学起,C++兼容C就是为了降低学习门槛。但是C和C++混用却不一定是necessary。 我们把C和C++归为一类,通常写作C/C++,那是因为从语言角度讲C的问题就是C++的问题,但是反过来就不成立,因此具体到某个工程的时候,你在开工之前就必须决定到底使用C还是C++,或者说到底是面向过程还是面向对象。当然,上面两种说法都不正确,因为C并不一定就是面向过程,C++也并不一定就是面向对象。不过面向过程的设计已经不适应潮流了,因此准确的提问应该是:到底使用C风格(以函数为元素)的面向对象还是C++风格(以类为元素)的面向对象。 在系统设计阶段就必须确定设计风格,因为这很重要,关系到代码的样式、兼容性、可移植性,风格的选择依据就是你手头的库,看你手头上能够使用的库有哪些,以哪一个库为基准,以及开发进度要求,这些因素必须平衡考虑,不能顾此失彼。 如果只是开发一个小程序(就是类似那种用C++Builder或者Dephi可视化功能再加上一些控件组装出来的程序),那么把各个能够使用的库糅合起来就可以了。 如果是一个大的需要持久维护的工程,就必须考虑库与库之间的兼容性、效率、耦合度。所谓兼容性就是这个库 ......

C和C++混用

Yes, C和C++混用的确是natural,毕竟绝大多数C++学习者都从C学起,C++兼容C就是为了降低学习门槛。但是C和C++混用却不一定是necessary。 我们把C和C++归为一类,通常写作C/C++,那是因为从语言角度讲C的问题就是C++的问题,但是反过来就不成立,因此具体到某个工程的时候,你在开工之前就必须决定到底使用C还是C++,或者说到底是面向过程还是面向对象。当然,上面两种说法都不正确,因为C并不一定就是面向过程,C++也并不一定就是面向对象。不过面向过程的设计已经不适应潮流了,因此准确的提问应该是:到底使用C风格(以函数为元素)的面向对象还是C++风格(以类为元素)的面向对象。 在系统设计阶段就必须确定设计风格,因为这很重要,关系到代码的样式、兼容性、可移植性,风格的选择依据就是你手头的库,看你手头上能够使用的库有哪些,以哪一个库为基准,以及开发进度要求,这些因素必须平衡考虑,不能顾此失彼。 如果只是开发一个小程序(就是类似那种用C++Builder或者Dephi可视化功能再加上一些控件组装出来的程序),那么把各个能够使用的库糅合起来就可以了。 如果是一个大的需要持久维护的工程,就必须考虑库与库之间的兼容性、效率、耦合度。所谓兼容性就是这个库 ......

C 指针

#include
void printptr(int *i){
printf("&i of printfptr = %#X\n",&i);
printf("i of printfptr = %#X\n",i);
printf("*i of printfptr = %d\n",*i);
printf("i+1 of printfptr = %#X\n",i+1);
printf("*(i + 1) of printfptr = %d\n",*(i+1));
}
void printptr2(int *i,int j){
printf("&i of printfptr2 = %#X\n",&i);
printf("i of printfptr2 = %#X\n",i);
printf("*i of printfptr2 = %d\n",*i);
printf("i+1 of printfptr2 = %#X\n",i+1);
printf("*(i + 1) of printfptr2 = %d\n",*(i+1));
}
void printptr3(int *i){
printf("&i of printfptr3 = %#X\n",&i);
printf("i of printfptr3 = %#X\n",i);
printf("*i of printfptr3 = %d\n",*i);
printf("i+1 of printfptr3 = %#X\n",i+1);
printf("*(i + 1) of printfptr3 = %d\n",*(i+1));
}
void printptr4(int *i,int j){
printf("&i of printfptr4 = %#X\n",&i); ......

extern "C"

extern "C"
目录
概述 编译方式 习惯用法

概述
  extern "C" 包含双重含义,从字面上即可得到:首先,被它修饰的目标是“extern”的;其次,被它修饰的目标是“C”的。让我们来详细解读这两重含义。
  (1) 被extern "C"限定的函数或变量是extern类型的
  extern是C/C++语言中表明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用。记住,下列语句:
  extern int a;
  仅仅是一个变量的声明,其并不是在定义变量a,并未为a分配内存空间。变量a在所有模块中作为一种全局变量只能被定义一次,否则会出现连接错误。
  通常,在模块的头文件中对本模块提供给其它模块引用的函数和全局变量以关键字extern声明。例如,如果模块B欲引用该模块A中定义的全局变量和函数时只需包含模块A的头文件即可。这样,模块B中调用模块A中的函数时,在编译阶段,模块B虽然找不到该函数,但是并不会报错;它会在连接阶段中从模块A编译生成的目标代码中找到此函数。
  与extern对应的关键字是static,被它修饰的全局变量和函数只能在本模块中使用。因此,一个函数或变量只可能被本 ......

实现java调用c

第一种方式采用jni:
Java不是完美的,Java的不足除了体现在运行速度上要比传统的C++慢许多之外,Java无法直接访问到操作系统底层(如系统硬件等),为此Java使用native方法来扩展Java程序的功能。
  可以将native方法比作Java程序同C程序的接口,其实现步骤:
1.在Java中声明native()方法,然后编译;例如: public native void displayHelloWorld();
2.然后在classes或bin之类的class根目录下执行javah -jni file,就会在根目录下得到一个file.h的文件。
3.编写一个.c文件实现native导出方法,其中需要包含第二步产生的.h文件(注意其中又包含了JDK带的jni.h文件); 例如:
#include "file.h"
  #include
  #include
  JNIEXPORT void JNICALL Java_file_displayHelloWorld(JNIEnv *env, jobject obj)
  {
  printf("Hello world!\n");
  return;
  }
4.将第三步的.cpp文件编译成动态链接库文件,vc的编译方法:cl -I%java_home%\include -I%java_home%\include\win32 -LD file.c -Fetest.dll ,之后编译生成DLL文件如“test.dll”。
5.、在Java中用System.loadLibrary()方法加载第四步产生的动态链接库文件,这个nat ......

新的编程语言anic:比C快比Java安全比shell还简单

ID为ultimus的程序员开发了一种名为anic的新语言,近日引起业界关注。根据Google Code上该项目的简介,该语言的正式名称是ANI,anic是这种语言的参考实现。ANI是一种实验性、高性能、静态安全、完全隐含支持并行、面向对象的通用数据流编程语言。anic用GNU工具链写成,因此可移植性很好,可以运行于所有主流操作系统,包括*NIX,Mac OS X和Windows(借助Cygwin)。用anic编写的Hello World程序是这样的:"Hello, World!"-std.out而用C语言编写并不轻松的多线程、实时的时钟+计算器混合程序,用anic写起来将如此简洁:@std.in;a=[[0\]];op=[[' '\]];b=[[0\]];r=[[0\]];0{clock =[[intms]]{("\r"+ms/1000.0+":"+a +op +b +"="+r)-std.out;1std.delay (ms+1)clock}};inLoop ={\in-a \in-op \in-b inLoop};\\op ??{'+':(\a+\b)'-':(\a-\b)'*':(\a*\b)'/':(\a/\b):0}-r;该项目的论坛上目前已经非常热烈,其中不乏Google公司的程序员参与其中。很酷,不是吗?赶快开始尝试吧:http://code.google.com/p/anic/ ......

新的编程语言anic:比C快比Java安全比shell还简单

ID为ultimus的程序员开发了一种名为anic的新语言,近日引起业界关注。根据Google Code上该项目的简介,该语言的正式名称是ANI,anic是这种语言的参考实现。ANI是一种实验性、高性能、静态安全、完全隐含支持并行、面向对象的通用数据流编程语言。anic用GNU工具链写成,因此可移植性很好,可以运行于所有主流操作系统,包括*NIX,Mac OS X和Windows(借助Cygwin)。用anic编写的Hello World程序是这样的:"Hello, World!"-std.out而用C语言编写并不轻松的多线程、实时的时钟+计算器混合程序,用anic写起来将如此简洁:@std.in;a=[[0\]];op=[[' '\]];b=[[0\]];r=[[0\]];0{clock =[[intms]]{("\r"+ms/1000.0+":"+a +op +b +"="+r)-std.out;1std.delay (ms+1)clock}};inLoop ={\in-a \in-op \in-b inLoop};\\op ??{'+':(\a+\b)'-':(\a-\b)'*':(\a*\b)'/':(\a/\b):0}-r;该项目的论坛上目前已经非常热烈,其中不乏Google公司的程序员参与其中。很酷,不是吗?赶快开始尝试吧:http://code.google.com/p/anic/ ......

用C实现串匹配的几种方法,kmp和BM

本来不想自己写的,但网上的大都是c++实现的,有些自称是C实现的 复制到编译器上根本运行不了。
KMP还是很经典的算法,我就不加注释了,直接返回第几个数匹配..
#include <stdio.h>
#include <stdlib.h>
void getNext(char t[]);
int next[80];
int main()
{
    char s[80],t[80];
    int result=0;
    printf("输入字符串:");
    gets(s);
    printf("输入字符串:");
    gets(t);
    getNext(t);
    int i=0,j=0;
    while(i<strlen(s)&&j<strlen(t))
    {
        if(s[i]==t[j]) {i++;j++;}
        else
        {
             j=next[j];
             if(j==-1) {i++;j++;}
        }
    }
    if(j>=strlen(t)) result=i-j+1;
    else resul ......
总记录数:40319; 总页数:6720; 每页6 条; 首页 上一页 [1680] [1681] [1682] [1683] 1684 [1685] [1686] [1687] [1688] [1689]  下一页 尾页
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号