传递给函数时char数组不显示

时间:2014-03-23 19:47:38

标签: c parameter-passing

为什么char数组的传递没有显示? 指针的位置传递给函数。

char plaintext[] = {
         0xCD,  0x76,  0x43,  0xF0,
         0x72,  0xA4,  0xA0,  0x82,
}

鉴于

 void displayArray(char** plaintext, int size) {
 // int newSize = sizeof(**plaintext);
 int i;

 for(i=0; i < size; ++i) {
     printf("%02X ", (0xff & *plaintext[i]));
    if (((i+1)% 8) == 0)    // as index starts from 0, (i+1)
        printf("\n");
 }
}

在main()

        char* plaintextCopy;
        plaintextCopy = (char*) malloc(numberOfItems*sizeof(char));

        memcpy(plaintextCopy, plaintext, numberOfItems);

        displayArray(&plaintextCopy, numberOfItems);

1 个答案:

答案 0 :(得分:1)

根据您的代码:

void displayArray(char** plaintext, int size)
{
    int i;

    for(i=0; i < size; i++) 
    {
        printf("%02X ", (0xff & (*plaintext)[i]));
        if(((i+1)% 8) == 0)    // as index starts from 0, (i+1)
            printf("\n");
    }
}

int main(void)
{


    char plaintext[] = {
         0xCD,  0x76,  0x43,  0xF0,
         0x72,  0xA4,  0xA0,  0x82,
    };

    int numberOfItems = sizeof(plaintext);

     char* plaintextCopy;
     plaintextCopy = (char*) malloc(numberOfItems*sizeof(char));

     memcpy(plaintextCopy, plaintext, numberOfItems);

     displayArray(&plaintextCopy, numberOfItems);

    return 0;
}

输出:

CD 76 43 F0 72 A4 A0 82

此外,如果您要发送要显示的数组或更改其值,则无需向函数发送双指针。常规指针可以。如果原始数组在内存中更改了它的位置,那么你应该只使用双指针,也就是说,它在函数返回后得到一个新的指针。