将问题从简单表复制到C代码中指定地址的结构表中的问题

问题描述 投票:0回答:1

当我要将值从一个表复制到结构中具有表中指定地址的结构中的另一个表时,此代码有问题。

我将代码示例放在下面。如果我使用PtrTableStruct,那是行不通的。如果我使用PtrTableStruc2,那可以,但是没有指定地址。有人可以帮助我,请:)

typedef struct
{
  unsigned short Table_Truc[256];
  unsigned short Table_Essai[256];
} ESSAI_STRUC_TABLE;

int main(int argc, char *argv[]) {
    unsigned char TheTable[2];

    ESSAI_STRUC_TABLE *PtrStruct = (ESSAI_STRUC_TABLE*) 0x1000000;
    unsigned char* PtrTableStruct = (unsigned char*) &PtrStruct->Table_Essai[0];

    unsigned char* PtrTableStruct2 = (unsigned char*) malloc(256 * sizeof(unsigned short));

    printf("address TheTable 0x%x\n",TheTable);
    printf("address PtrStruct 0x%x\n", PtrStruct);
    printf("address PtrTableStruct 0x%x\n", PtrTableStruct);
    printf("address PtrTableStruct2 0x%x\n", PtrTableStruct2);

    TheTable[0] = 100;
    TheTable[1] = 101;

    unsigned char * NewTable = TheTable;

    int iter;

    for(iter=0;iter<2;iter++){
        *PtrTableStruct++ = *NewTable++;  // that does not work
//      *PtrTableStruct2++ = *NewTable++;  // that works
    }

    return 0;
}
c pointers memory-address
1个回答
0
投票

一般来说,因为您有

typedef struct
{
  unsigned short Table_Truc[256];
  unsigned short Table_Essai[256];
} ESSAI_STRUC_TABLE;

您可以通过创建实例和指针来获得该结构的实例的指针:

ESSAI_STRUC_TABLE instanceOfTable[2] = {0}, *ptrToInstanceOfTable = NULL;

然后将指针分配给实例的地址:

ptrToInstanceOfTable  = &instanceOfTable[0];

现在,ptrToInstanceOfTable指向足以容纳2 ESSAI_STRUC_TABLE的数组的内存区域。

© www.soinside.com 2019 - 2024. All rights reserved.