摘要:1. C语言动态分配二维数组(1)已知第二维Code-1char (*a)[N];//指向数组的指针a = (char (*)[N])malloc(sizeof(char *) * m);printf("%d\n", sizeof(a));//4,指针printf("%d\n", sizeof(a[0]));//N,一维数组free(a); (2)已知第一维Code-2char* a[M];//指针的数组int i;for(i=0; i<M; i++)a[i] = (char *)malloc(sizeof(char) * n);printf(&q
阅读全文
文章分类 - C/C++
摘要:%用loadlibrary函数, 根据epanet2.h中的函数定义,加载epanet2.dllloadlibrary('c:\epanet2.dll','c:\epanet2.h');%查看epanet2.dll支持的函数接口libfunctions epanet2 -full% [int32, string, string, string] ENopen(string, string, string)% int32 ENsolveH % [int32, singlePtr] ENgetnodevalue(int32, int32, singlePtr)a1=
阅读全文
摘要:VC++中主要字符串类型为:LPSTR,LPCSTR, LPCTSTR, string, CString, LPCWSTR, LPWSTR等但转为C#类型却不完全相同。主要有如下几种转换:将string转为IntPtr:IntPtr System.Runtime.InteropServices.Marshal.StringToCoTaskMemAuto(string)将IntPtr转为string:string System.Runtime.InteropServices.MarshalPtrToStringAuto(IntPtr)类型对照:BSTR --------- StringBuild
阅读全文
摘要:背景 在项目过程中,有时候你需要调用非C#编写的DLL文件,尤其在使用一些第三方通讯组件的时候,通过C#来开发应用软件时,就需要利用DllImport特性进行方法调用。本篇文章将引导你快速理解这个调用的过程。步骤1. 创建一个CSharpInvokeCPP的解决方案:2. 创建一个C++的动态库项目:3. 在应用程序设置中,选择“DLL”,其他按照默认选项:最后点击完成,得到如图所示项目: 我们可以看到这里有一些文件,其中dllmain.cpp作为定义DLL应用程序的入口点,它的作用跟exe文件有个main或者WinMain入口函数是一样的,它就是作为DLL的一个入口函数,实际上它是个可选的文
阅读全文
摘要:一、DLL的创建创建项目: Win32->Win32项目,名称:MyDLL选择DLL (D) ->完成.1、新建头文件testdll.htestdll.h代码如下:#ifndef TestDll_H_#define TestDll_H_#ifdef MYLIBDLL#define MYLIBDLL extern "C" _declspec(dllimport)#else#define MYLIBDLL extern "C" _declspec(dllexport)#endifMYLIBDLL int Add(int plus1, int pl
阅读全文
摘要:C# App在调用C++等编写的win32 dll时出现如下异常:Bad formate excepiton ....试图加载格式不正确的程序。 (Exception from HRESULT: 0x8007000B)的处理解决方法:将C#工程属性的生成目标修改为 X86,或相应的而不是默认的AnyCPU
阅读全文
摘要:定义: int *pia = new int[10]; // array of 10 uninitialized ints此 new 表达式分配了一个含有 10 个 int 型元素的数组,并返回指向该数组第一个元素的指针,此返回值初始化了指针 pia。在自由存储区中创建的数组对象是没有名字的,只能通过其地址间接地访问堆中的对象。注意:C++使用new和delete在堆(自由存储区)上分配和释放动态数组。动态数组初始化:1.元素只能初始化为元素类型的默认值,而不能像数组变量一样,用初始化列表为数组元素提供各不相同的初值。2.对于内置数据类型元素的数组,必须使用()来显示指定程序执行初始化操作,否
阅读全文
摘要:1.new、delete、malloc、free关系delete会调用对象的析构函数,和new对应free只会释放内存,new调用构造函数。malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。因此C++语言需要一个能完成动态内存分配和初始化
阅读全文
摘要:数学计算的公式具体实现是放在math.h里,具体有: 1 三角函数 double sin (double); double cos (double); double tan (double); 2 反三角函数 double asin (double); 结果介于[-PI/2, PI/2] double acos (double); 结果介于[0, PI] double atan (double); 反正切(主值), 结果介于[-PI/2, PI/2] double atan2 (double, double); 反正切(整圆值), 结果介于[-PI/2, PI/2] 3 双曲三角函数 doub
阅读全文
摘要:你是否想在Windows下学习汇编呢,那就试试EMU8086吧
阅读全文
摘要:访问设备时可能用到的API
阅读全文
只有注册用户登录后才能阅读该文。
摘要:文件 文件的基本概念 所谓“文件”是指一组相关数据的有序集合。 这个数据集有一个名称,叫做文件名。 实际上在前面的各章中我们已经多次使用了文件,例如源程序文件、目标文件、可执行文件、库文件 (头文件)等。文件通常是驻留在外部介质(如磁盘等)上的, 在使用时才调入内存中来。从不同的角度可对文件作不同的分类。从用户的角度看,文件可分为普通文件和设备文件两种。 普通文件是指驻留在磁盘或其它外部介...
阅读全文
摘要:默认情况下直接应用atoi/itoa、FILE会编译出错,一般是没有引用相关头文件: atoi/itoa 应#include "stdlib.h" FILE 应#include "stdio.h" 大学里学习C/C++后基本上没怎么再看实际的应用案例,作为一个底层语言,工作了这么多年,的确该抽时间看看实际应用的。
阅读全文
摘要:#include #include #include FILE *stream;//, *stream2; FILE *stream2; void main( void ) { int numclosed; char *list; list="这个程序由阳永红编写"; //试图打开文件data.txt,如果该文件不存在,则自动创建 if( (stream= fopen(...
阅读全文