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

Java 和 C++ 的区别


1. java 是运行在jvm上的,之所以说它的可移植性强,是因为jvm可以安装到任何的系统 
    c++不是不能在其他系统运行,而是c++在不同的系统上运行,需要不同的编码(这一点不如java,只编写一次代码,到处运行) 
2. java 在web 应用上具有c++ 无可比拟的优势 
3. java在桌面程序上不如c++实用,c++可以直接编译成二进制(exe)文件 
4. 指针是c++的优势,可以直接对内存的操作,但同时具有危险性
5. 垃圾回收,c++用析构函数回收垃圾,java自动回收
6. java 丰富的插件是java 发展如此迅速的原因
7. java 很大的沿袭了c++的一些实用结构
8. 对于底层程序的编程以及控制方面的编程,c++很灵活,因为有句柄的存在  ......

Java 和 C++ 的区别


1. java 是运行在jvm上的,之所以说它的可移植性强,是因为jvm可以安装到任何的系统 
    c++不是不能在其他系统运行,而是c++在不同的系统上运行,需要不同的编码(这一点不如java,只编写一次代码,到处运行) 
2. java 在web 应用上具有c++ 无可比拟的优势 
3. java在桌面程序上不如c++实用,c++可以直接编译成二进制(exe)文件 
4. 指针是c++的优势,可以直接对内存的操作,但同时具有危险性
5. 垃圾回收,c++用析构函数回收垃圾,java自动回收
6. java 丰富的插件是java 发展如此迅速的原因
7. java 很大的沿袭了c++的一些实用结构
8. 对于底层程序的编程以及控制方面的编程,c++很灵活,因为有句柄的存在  ......

几种C/C++的函数压栈方式

一,不同关键字,系统压栈方式
1,如果函数func是__cdecl(VC下的默认调用方式),调用时情况如下
int main()
{
//参数从右到左压栈
push 4
push 3
push 2
push 1
call func
add esp 0x10 //调用者恢复堆栈指针esp,4个参数的大小是0x10(4x4)
}
C调用约定(即用__cdecl关键字说明)按从右至左的顺序压参数入栈,由调用者把参数弹出栈。对于传送参数的内存栈是由调用者来维护的(正因为如此,实现可变参数的函数只能使用该调用约定)。另外,在函数名修饰约定方面也有所不同。
_cdecl是C和C++程序的缺省调用方式。每一个调用它的函数都包含清空堆栈的代码,所以产生的可执行文件大小会比调用_stdcall函数的大。函数采用从右到左的压栈方式。VC将函数编译后会在函数名前面加上下划线前缀。是MFC缺省调用约定
2.如果函数func是__stdcall,调用时情况如下
int main()
{
//参数从右到左压栈
push 4
push 3
push 2
push 1
call func
//恢复堆栈指针由被调用者func负责,方法是"ret 0x10"
}
_stdcall是Pascal程序的缺省调用方式,通常用于Win32 Api中,函数采用从右到左的压栈方式,自己在退出时清空堆栈。VC将函数编译后会在函数名 ......

几种C/C++的函数压栈方式

一,不同关键字,系统压栈方式
1,如果函数func是__cdecl(VC下的默认调用方式),调用时情况如下
int main()
{
//参数从右到左压栈
push 4
push 3
push 2
push 1
call func
add esp 0x10 //调用者恢复堆栈指针esp,4个参数的大小是0x10(4x4)
}
C调用约定(即用__cdecl关键字说明)按从右至左的顺序压参数入栈,由调用者把参数弹出栈。对于传送参数的内存栈是由调用者来维护的(正因为如此,实现可变参数的函数只能使用该调用约定)。另外,在函数名修饰约定方面也有所不同。
_cdecl是C和C++程序的缺省调用方式。每一个调用它的函数都包含清空堆栈的代码,所以产生的可执行文件大小会比调用_stdcall函数的大。函数采用从右到左的压栈方式。VC将函数编译后会在函数名前面加上下划线前缀。是MFC缺省调用约定
2.如果函数func是__stdcall,调用时情况如下
int main()
{
//参数从右到左压栈
push 4
push 3
push 2
push 1
call func
//恢复堆栈指针由被调用者func负责,方法是"ret 0x10"
}
_stdcall是Pascal程序的缺省调用方式,通常用于Win32 Api中,函数采用从右到左的压栈方式,自己在退出时清空堆栈。VC将函数编译后会在函数名 ......

C/C++/Java for语句规范写法浅析(二重及以上循环)

 举个简单例子:用二重循环输出1-100 数字;
 当然我这里是举例子针对二重及以上的循环,
完全可以使用单循环,于是便飞快的完成了以下
 代码:
  如下就用C/C++举例。
 C++代码(VS2008):
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    int i = 0;
    int j = 0;
    int count = 0;
    cout<<"Run Result:"<< endl;
    for (;i<10;i++)
    {
        for (;j<10;j++)
        {
            count++;
            cout<< "\t"<< count<<endl;
        }
    }
    return 0;
}
 
  Run Result:
        ......

C/C++/Java for语句规范写法浅析(二重及以上循环)

 举个简单例子:用二重循环输出1-100 数字;
 当然我这里是举例子针对二重及以上的循环,
完全可以使用单循环,于是便飞快的完成了以下
 代码:
  如下就用C/C++举例。
 C++代码(VS2008):
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    int i = 0;
    int j = 0;
    int count = 0;
    cout<<"Run Result:"<< endl;
    for (;i<10;i++)
    {
        for (;j<10;j++)
        {
            count++;
            cout<< "\t"<< count<<endl;
        }
    }
    return 0;
}
 
  Run Result:
        ......

C/C++/Java for语句规范写法浅析(二重及以上循环)

 举个简单例子:用二重循环输出1-100 数字;
 当然我这里是举例子针对二重及以上的循环,
完全可以使用单循环,于是便飞快的完成了以下
 代码:
  如下就用C/C++举例。
 C++代码(VS2008):
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    int i = 0;
    int j = 0;
    int count = 0;
    cout<<"Run Result:"<< endl;
    for (;i<10;i++)
    {
        for (;j<10;j++)
        {
            count++;
            cout<< "\t"<< count<<endl;
        }
    }
    return 0;
}
 
  Run Result:
        ......

c/c++的知识点收集

1.动态获得内存的代码:
void GetMemory(char **p, int num)
{
  *p = (char *)malloc(sizeof(char) * num);
}
char* GetMemory2(int num)
{
  char* p = (char *)malloc(sizeof(char) * num);
  return p;
}
------------------------------------------
错误的代码:
void GetMemory3(char *p, int num)
{
  p = (char *)malloc(sizeof(char) * num);
}///////////////错误在哪里,我就不说,自己去查.
2.strcpy()的代码:
char* strcpy(char* strDest,const char* strSrc)
{
    if(strDest==NULL || strSrc==NULL)      return NULL;
    char* pStr=strDest;
    while((*strDest++=*strSrc++)!='\0)
          NULL;
    return pStr; 
}
3.memcpy()的代码:
void* memcpy(char* strDest,const char* strSrc,size_t size)
{
    if(strDest==NULL||strSrc==NULL) return NULL;
    if(size <=0) return NULL;   
    ......

c/c++的知识点收集

1.动态获得内存的代码:
void GetMemory(char **p, int num)
{
  *p = (char *)malloc(sizeof(char) * num);
}
char* GetMemory2(int num)
{
  char* p = (char *)malloc(sizeof(char) * num);
  return p;
}
------------------------------------------
错误的代码:
void GetMemory3(char *p, int num)
{
  p = (char *)malloc(sizeof(char) * num);
}///////////////错误在哪里,我就不说,自己去查.
2.strcpy()的代码:
char* strcpy(char* strDest,const char* strSrc)
{
    if(strDest==NULL || strSrc==NULL)      return NULL;
    char* pStr=strDest;
    while((*strDest++=*strSrc++)!='\0)
          NULL;
    return pStr; 
}
3.memcpy()的代码:
void* memcpy(char* strDest,const char* strSrc,size_t size)
{
    if(strDest==NULL||strSrc==NULL) return NULL;
    if(size <=0) return NULL;   
    ......

C/C++数组名与指针区别深入探索

引言
  指针是C/C++语言的特色,而数组名与指针有太多的相似,甚至很多时候,数组名可以作为指针使用。于是乎,很多程序设计者就被搞糊涂了。而许多的大学老师,他们在C语言的教学过程中也错误得给学生讲解:"数组名就是指针"。很幸运,我的大学老师就是其中之一。时至今日,我日复一日地进行着C/C++项目的开发,而身边还一直充满这样的程序员,他们保留着"数组名就是指针"的误解。
  想必这种误解的根源在于国内某著名的C程序设计教程。如果这篇文章能够纠正许多中国程序员对数组名和指针的误解,笔者就不甚欣慰了。借此文,笔者站在无数对知识如饥似渴的中国程序员之中,深深寄希望于国内的计算机图书编写者们,能以"深入探索"的思维方式和精益求精的认真态度来对待图书编写工作,但愿市面上多一些融入作者思考结晶的心血之作!
  魔幻数组名
  请看程序(本文程序在WIN32平台下编译):
1. #include <iostream.h>
2. int main(int argc, char* argv[])
3. {
4.  char str[10];
5.  char *pStr = str;
6.  cout << sizeof(str) << endl;
7.  cout << sizeof(pStr) << endl;
8.  return 0;
9. }
  1、数组名不是 ......

C/C++数组名与指针区别深入探索

引言
  指针是C/C++语言的特色,而数组名与指针有太多的相似,甚至很多时候,数组名可以作为指针使用。于是乎,很多程序设计者就被搞糊涂了。而许多的大学老师,他们在C语言的教学过程中也错误得给学生讲解:"数组名就是指针"。很幸运,我的大学老师就是其中之一。时至今日,我日复一日地进行着C/C++项目的开发,而身边还一直充满这样的程序员,他们保留着"数组名就是指针"的误解。
  想必这种误解的根源在于国内某著名的C程序设计教程。如果这篇文章能够纠正许多中国程序员对数组名和指针的误解,笔者就不甚欣慰了。借此文,笔者站在无数对知识如饥似渴的中国程序员之中,深深寄希望于国内的计算机图书编写者们,能以"深入探索"的思维方式和精益求精的认真态度来对待图书编写工作,但愿市面上多一些融入作者思考结晶的心血之作!
  魔幻数组名
  请看程序(本文程序在WIN32平台下编译):
1. #include <iostream.h>
2. int main(int argc, char* argv[])
3. {
4.  char str[10];
5.  char *pStr = str;
6.  cout << sizeof(str) << endl;
7.  cout << sizeof(pStr) << endl;
8.  return 0;
9. }
  1、数组名不是 ......

C/C++传递二维数组

C/C++传递二维数组 - [IT资料]
//c语言中经常需要通过函数传递二维数组,有三种方法可以实现,如下:
//方法一, 形参给出第二维的长度。
#include <stdio.h>
void func(int n, char str[][5])
{
           int i;
           for (i = 0; i < n; i++)
           {
                   printf("\nstr[%d] = %s\n", i, str[i]);
           }
}
void main()
{
           char str[][5] = {"abc", "def", "ghi"};
           func(3, str);
}
//方法二,形参声明为指向数组的指针。
#include <stdio.h>
void func(int n, char (*str)[5])
{
           int i;
&n ......

C/C++传递二维数组

C/C++传递二维数组 - [IT资料]
//c语言中经常需要通过函数传递二维数组,有三种方法可以实现,如下:
//方法一, 形参给出第二维的长度。
#include <stdio.h>
void func(int n, char str[][5])
{
           int i;
           for (i = 0; i < n; i++)
           {
                   printf("\nstr[%d] = %s\n", i, str[i]);
           }
}
void main()
{
           char str[][5] = {"abc", "def", "ghi"};
           func(3, str);
}
//方法二,形参声明为指向数组的指针。
#include <stdio.h>
void func(int n, char (*str)[5])
{
           int i;
&n ......
总记录数:969; 总页数:162; 每页6 条; 首页 上一页 [137] [138] [139] [140] 141 [142] [143] [144] [145] [146]  下一页 尾页
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号