易截截图软件、单文件、免安装、纯绿色、仅160KB

在C#里创建和使用C风格数据结构

在C#里创建和使用C风格数据结构,即非托管的数据结构,可以提高性能。
1 数据结构的定义
看下面例子:
    unsafe struct A {
        public int x;
    }
    unsafe struct B {
        public A a; //A内嵌到B中
        public A* pa; //A链接到B中
        public fixed int x[10]; //固定大小的数组内嵌到B中
        public int* p; //大小未定的数组(首指针)链接到B中
    }
所有数据结构,都用struct,不用class,而且struct每一个子元素都不能是class。
2 在非托管堆中创建对象或数组
看下面例子(静态类class C的源代码在后面给出):
    A* pa=(A*)C.New(sizeof(A)); //相当于C里面的A* pa=(A*)malloc(sizeof(A));
    B* pb=(B*)C.New(sizeof(B),5); //创建一个有5个元素的一维B数组
    int** a1=(int**)C.New(sizeof(int), 2, 3); //创建一个2*3二维int数组,可用a1[i][j]访问每个元素
    int** a2=(int**)C.New(new int[2,3]); //功能同上,并用0初始化数组
    int** a3=(int**)C.New(new int[,]{{1, 2, 3},{4, 5, 6}}); //功能同上,并用指定值初始化数组
    char* s=C.New("abcde"); //用字符串初始化char数组
    C.Delete(pa, pb, a1, a2, a3, s); //释放上述对象的内存,参数个数任意
3 在栈中创建对象或数组
看下面例子:
    A a; //建立栈对象a
    B* pb=stackalloc B[5]; //创建一个有5个元素的一维栈数组
    char* p1=stackalloc char[5];
    C.Copy(p1, "Test"); //把字符串里的字符复制到栈数组里
    C.Copy(p1, new[] { 'T', 'e', 's', 't', '\0' }); //把托管数组的数据复制到栈数组里
4 静态类class C的源代码
unsafe static class C {
[DllImport("msvcrt")]
public static extern void* malloc(uint size);
[DllImport("msvcrt")]
public static extern void* realloc(void* p, uint newsize);
[DllImpor


相关文档:

c 字符串处理函数 strtok 源码

/***
*strtok.c - tokenize a string with given delimiters
*
* Copyright (c) Microsoft Corporation. All rights reserved.
*
*Purpose:
* defines strtok() - breaks string into series of token
* via repeated calls.
*
************************************************************** ......

C/C++ 字符串处理函数

刚开始学C/C++时,一直对字符串处理函数一知半解,这里列举C/C++字符串处理函数,希望对初学者有一定的帮助。
C:
char st[100];
1. 字符串长度
   strlen(st);
2. 字符串比较
   strcmp(st1,st2);
   strncmp(st1,st2,n);   把st1,st2的前n个进行比较。
3. 附加
 & ......

LINUX C 链表封装


main.c
//初始化队列
void InitQueue(LiQueue *q)
{
  q=(LiQueue*)malloc(sizeof(LiQueue));
    q->front=q->rear=NULL;
}
//判断是否为空
int QueueEmpty(LiQueue *q)
{
 if(q->rear==NULL)
 {
  return 1;
 }
 else
 {
  ......

extern "C"

如果C++调用一个C语言编写的.DLL时,当包括.DLL的头文件或声明接口函数时,应加extern "C" { }。
如:
头文件cExample.h
#include <stdio.h>
#ifndef C_EXAMPLE_H
#define C_EXAMPLE_H
int add(int x,int y);
#endif

函数实现文件cExample.c(注意是.c文件)
#include<stdio.h>
#include "cExample ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号