文章目录

1.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<iostream>
using namespace std;

int main()
{
class a
{};

cout << sizeof(a) << endl;



}

  1. https://blog.csdn.net/pingingchen/article/details/44594261

  2. 为什么空类型占一个字节: https://blog.csdn.net/imcdragon/article/details/6882875

  3. 为什么空类占用1个字节,而空数组布占呢
    https://bbs.csdn.net/topics/320170518

  4. c语言中的结构体中成员怎么不能直接初始化
    http://bbs.itheima.com/forum.php?mod=viewthread&tid=158477

  5. 先搞清楚初始化和赋值
    https://bbs.csdn.net/topics/390776522

  6. 为什么报错: error C3863: array type 'char [20]' is not assignable

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    #include<iostream>
    using namespace std;
    #define COMNumberLength 20

    enum enReaderNumber : int //读写器编号枚举类型
    {
    ENRNINREADER, //进站读写器
    ENRNVALUEREADER, //出站储值卡读写器
    ENRNTOKENREADER, //出站单程票读写器
    MAXENRN //枚举类型最大值
    };

    struct stReaderRunParam //读写器运行参数
    {
    char st_COMNumber[COMNumberLength]; //读写器串口号
    int st_Baudrate; //读写器通讯波特率
    int st_WorkType; //读写器工作类型
    int st_LogSize; //读写器日志文件容量
    };
    stReaderRunParam m_RunParam[MAXENRN]; //读写器运行参数


    int main()
    {

    //m_RunParam[1] = { "takethat",115200,2,1 };

    m_RunParam[1].st_Baudrate = 115200;
    m_RunParam[1].st_COMNumber = "tty/s3";
    m_RunParam[1].st_LogSize = 10;
    m_RunParam[1].st_WorkType = 1;
    //memset(m_RunParam, 0x00, 3 * sizeof(stReaderRunParam));
    cout << m_RunParam[3].st_Baudrate << endl;

    return 0;

    }
  7. 用VS查看结构体数组内存地址会

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    #include<iostream>
    #include <string.h>
    using namespace std;
    #define COMNumberLength 20

    enum enReaderNumber : int //读写器编号枚举类型
    {
    ENRNINREADER, //进站读写器
    ENRNVALUEREADER, //出站储值卡读写器
    ENRNTOKENREADER, //出站单程票读写器
    MAXENRN //枚举类型最大值
    };

    struct stReaderRunParam //读写器运行参数
    {
    int st_Baudrate; //读写器通讯波特率
    char st_COMNumber[COMNumberLength]; //读写器串口号

    int st_WorkType; //读写器工作类型
    int st_LogSize; //读写器日志文件容量
    };
    stReaderRunParam m_RunParam[MAXENRN]; //读写器运行参数


    int main()
    {

    //m_RunParam[1] = { "takethat",115200,2,1 };

    m_RunParam[1].st_Baudrate = 115200;
    strcpy(m_RunParam[1].st_COMNumber, "tty/s3");
    m_RunParam[1].st_LogSize = 10;
    m_RunParam[1].st_WorkType = 1;
    //memset(m_RunParam, 0x00, 3 * sizeof(stReaderRunParam));
    cout << m_RunParam[3].st_Baudrate << endl;

    return 0;

    }

https://www.cnblogs.com/tenjl-exv/p/7559674.html

9.

1
2
3
4
5
6
7
8
int CReader_CD10A::checkCard(void* i_CardData, void* i_TradeData)
{
int iRet = 0;

//iRet = m_cd->SZ_Check_Ticket(i_fd, *(stCheckTicketInfo*)i_CardData, *(stTradeInfo*)i_TradeData);
iRet = m_cd->CD_AccessStation(*(_stAccessStation*)i_CardData);
return iRet;
}
  1. https://blog.csdn.net/u013687632/article/details/78616495

  2. c语言与指针
    https://blog.csdn.net/cooljune/article/details/18809179

初始化和赋值的区别
https://blog.csdn.net/gxnu/article/details/1832462

  1. 函数传参, 结构体强转:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    #define  _CRT_SECURE_NO_WARNINGS
    #include<iostream>
    using namespace std;


    typedef unsigned char U8;

    typedef struct stInitMode {
    char chModeStartTime[15]; // IN,模式发生时间(YYYYMMDDhh24mmss);
    U8 ucModeID; // IN,模式ID (参见第4分册“3.2.11 降级运营模式ID”)
    }_stInitMode;


    struct stInitReaderInfo_CD
    {
    char chLineNumber[3]; // IN,线路编码
    char chStationNumber[3]; // IN,车站编码
    char chEquipType[3]; // IN,设备类型
    char chEquipNumber[4]; // IN,3bytes设备编号
    U8 EquipWorkMode; // IN,设备工作模式(读写器工作模式:0x00——使用指令中的工作模式;0x10——ES;0x20——非付费区BOM;0x21——付费区BOM;0x22——TVM;0x23——TCM;0x24——PCA;0x40——进站AGM;0x41——出站AGM)
    U8 DownWorkModenum; // IN,模式数量
    char chRCodeBaudrate[12]; // IN,关联扫码枪通讯波特率
    _stInitMode Mode[16];
    // stInitMode_CD Mode[16];

    char chRCodeCOM[10]; // IN,关联扫码枪串口号
    char chModeStartTime[15]; // IN,模式发生时间(YYYYMMDDhh24mmss);
    char chRCodeServerAddr[256]; // IN, 支付平台接入地址,例如http://182.140.238.35:61082/
    U8 ucModeID; // IN,模式ID (参见第4分册“3.2.11 降级运营模式ID”)
    bool Mark_IsUseQRcode; //take:add是否启用二维码 在读写器里传参标志需要
    };

    typedef struct stInitReaderInfo {
    char chLineNumber[3]; // IN,线路编码
    char chStationNumber[3]; // IN,车站编码
    char chEquipmentType[3]; // IN,设备类型
    char chEquipmentNumber[4]; // IN,3bytes设备编号
    U8 ucEquipWorkMode; // IN,设备工作模式(读写器工作模式:0x00——使用指令中的工作模式;0x10——ES;0x20——非付费区BOM;0x21——付费区BOM;0x22——TVM;0x23——TCM;0x24——PCA;0x40——进站AGM;0x41——出站AGM)
    U8 ucDownWorkModenum; // IN,模式数量
    _stInitMode Mode[16];
    //char chEquipmentID[17]; // OUT,16位PSAM卡ID
    } _stInitReaderInfo;


    typedef struct _stRCodeInfo {
    char chRCodeCOM[10]; // IN,关联扫码枪串口号
    char chRCodeBaudrate[12]; // IN,关联扫码枪通讯波特率
    char chRCodeServerAddr[256]; // IN, 支付平台接入地址,例如http://182.140.238.35:61082/
    } _stRCodeInfo;




    void startReaderAFC(void* i_StartAFCData)
    {


    /****>>>>>>>>>>>>>>>>>>take:第一个参数结构体***>>>>>>>>>>>>>>>>>>>>>>>>>******************/

    _stInitReaderInfo take_stInitReaderInfo;
    strcpy(take_stInitReaderInfo.chLineNumber, ((stInitReaderInfo_CD*)i_StartAFCData)->chLineNumber);
    strcpy(take_stInitReaderInfo.chStationNumber, ((stInitReaderInfo_CD*)i_StartAFCData)->chStationNumber);
    strcpy(take_stInitReaderInfo.chEquipmentType, ((stInitReaderInfo_CD*)i_StartAFCData)->chEquipType);
    strcpy(take_stInitReaderInfo.chEquipmentNumber, ((stInitReaderInfo_CD*)i_StartAFCData)->chEquipNumber);
    take_stInitReaderInfo.ucEquipWorkMode = ((stInitReaderInfo_CD*)i_StartAFCData)->EquipWorkMode;
    take_stInitReaderInfo.ucDownWorkModenum = ((stInitReaderInfo_CD*)i_StartAFCData)->DownWorkModenum;
    //take_stInitReaderInfo.Mode = ((stInitReaderInfo_CD*)i_StartAFCData)->Mode;
    memcpy(take_stInitReaderInfo.Mode, ((stInitReaderInfo_CD*)i_StartAFCData)->Mode, sizeof(take_stInitReaderInfo.Mode));//take:这样可以吗?

    /***<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<take:第一个参数结构体**<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<******/


    /*>>>>>>>>>>>>>>>>>>>>>>>>>>>take:第二个参数*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
    _stRCodeInfo *ptr_stRCodeInfo = (_stRCodeInfo*)malloc(sizeof(_stRCodeInfo));

    strcpy(ptr_stRCodeInfo->chRCodeCOM, ((stInitReaderInfo_CD*)i_StartAFCData)->chRCodeCOM);
    strcpy(ptr_stRCodeInfo->chRCodeBaudrate, ((stInitReaderInfo_CD*)i_StartAFCData)->chRCodeBaudrate);

    strcpy(ptr_stRCodeInfo->chRCodeServerAddr, ((stInitReaderInfo_CD*)i_StartAFCData)->chRCodeServerAddr);

    cout << take_stInitReaderInfo.Mode[0].chModeStartTime << endl;
    /*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*******************************************************<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
    // cout << ((test*)i_StartAFCData)->chEquipNumber << endl;



    // cout<<((stInitReaderInfo_CD*)i_StartAFCData)->chEquipmentNumber;
    }

    int main()
    {
    stInitReaderInfo_CD temp[2];


    // strcpy(temp[0].chEquipNumber_, "aa");
    temp[0].EquipWorkMode = 34;

    strcpy(temp[0].Mode[0].chModeStartTime, "201804-=18");
    strcpy( temp[0].chLineNumber, "nu");

    strcpy(temp[0].chStationNumber,"st");
    strcpy(temp[0].chEquipType,"tp");
    strcpy(temp[0].chEquipNumber, "chn");


    temp[1] = { 0 };

    startReaderAFC(&temp);


    }
  2. 回车(CR)与换行(LF),即 ‘\r’与’\n’的区别

https://blog.csdn.net/u013540854/article/details/37593357

http://www.ruanyifeng.com/blog/2006/04/post_213.html

彻底搞定回车0d和换行0a
https://blog.csdn.net/e_wsq/article/details/72957218

文章目录