zoukankan      html  css  js  c++  java
  • 数组结构体简单用法

    1、数组变量名是常指针,结构体变量名不是,return 数组变量名是指针不是数组,(局部定义的数组结束时释放,返回无意义)return结构体变量名是结构体

    以此解释数组在声明后不能对变量名再次赋值,因为是常指针.字符串可以用指针变量赋值,其他可以memcpy()在<memory.h>以及<string.h>有定义

    void *memcpy(void *dest, const void*src,size_t count);count以字节为单位一般sizeof(datatypelength)*N,指向const说明src指向内存不会更改

    2、声明数组(全局除外)以及函数传参表不用指明元素个数,如void function(double*ptr)或void function(double ptr[]);

    3、大型临时数组放在malloc堆,减少局部变量对函数调用栈的使用

    5、size_t同本机的unsigned int

    6、const限制符,变量是只读的,初始化后不能被改变,具有变量性质,命名空间作用域。

    const int*p;指向const类对象

    int*const p;常指针,指向后不更改,一个51单片机程序

    unsigned char code cmd0[] = "buzz on"; //开蜂鸣器命令
    unsigned char code cmd1[] = "buzz off"; //关蜂鸣器命令
    unsigned char code cmd2[] = "showstr "; //字符串显示命令
    unsigned char code cmdLen[] = { //命令长度汇总表
    sizeof(cmd0)-1, sizeof(cmd1)-1, sizeof(cmd2)-1,
    };
    unsigned char code *cmdPtr[] = { //命令指针汇总表
    &cmd0[0], &cmd1[0], &cmd2[0],
    };

    7、结构体自引用只能引用指针,指针的长度是已知,对指针类型解释实在结构体定义完成后需要的

    8、结构体的复制这一点网上很多说法下面是我用过场合

    typedef struct
    {
        float llr[N][M + 1];
        uint8_t deCoCode[N];
        uint8_t sumForGnod[N]; 
    }pathData, *ptrPathData;
    
    typedef struct
    {
        float pathMea;
        uint8_t tmpDeCoCode;
        ptrPathData ptrSpathData;
    }pathMes, *ptrPathMes;
    #define S_PDATA_CUR_INHRT  SpathData[curStruNum]
    #define S_PDATA_CUR_CP SpathData[curStruNum + *(pathOffset + mesBitNum)]
    
    S_PDATA_CUR_CP = S_PDATA_CUR_INHRT;//结构体赋值类似内存复制,如此而已
    S_PMES_SNIP_CP = S_PMES_CUR_INHRT;//结构体里有指针,复制前后两个指针指向同一片区域,根据需要处理就可以了
    *(SpathMes[(noSonIndex[i])].ptrSpathData) = *(SpathMes[(seSonIndex[i])].ptrSpathData);//Data内容替换
    SpathMes[(seSonIndex[i])].ptrSpathData = SpathMes[(noSonIndex[i])].ptrSpathData;//指向Data的指针替换

     9、typedef习惯

    typedef struct newstruct_s{//结构标签具有与其他标识符不同的独立命名空间,故与结构名相同即可
        int a,b;
        double c,d;
        struct newstruct_s *next;//有个元素类型就是结构本身应用struct newstruct_s,               
    }newstruct_s;//_s结尾

    当然,有人习惯用指针,不过具有全局性质的内部细节需要被用户所知的结构,少用typedef的话直观一些,typedef作用域与变量相同

    10、从一个函数返回一个结构可以返回多个值

  • 相关阅读:
    js面对对象和jQuery的使用
    感知器PLA算法
    MSP430G2系列学习笔记
    数学建模——规划问题
    51单片机学习(一)
    打靶法求解两点边值问题
    GAOT工具箱(遗传算法)的应用
    数学建模方法
    关于mysql 5.7 版本登录时出现错误 1045的随笔
    oracle复习(二)
  • 原文地址:https://www.cnblogs.com/yifan2015/p/5716207.html
Copyright © 2011-2022 走看看