在函数内设置指针值

时间:2012-09-26 09:25:31

标签: c pointers pass-by-reference

  

可能重复:
  void pointer as argument

我正在尝试在C中创建一个简单的函数,但是我得到一个空输出,我无法找出原因:

int encrypt(unsigned char *message, char *key,  unsigned char *buffered_message)
{
    /* ... */

    buffered_message = calloc(1, (blocks * block_size));

    /* ... */

    printf("Message: %s\n", buffered_message);

    return strlen(buffered_message);
}

在功能内部,信息​​打印出来没有问题。但是当我尝试在main中使用我的函数时,出现了问题。

int main()
{
    /* ... */

    unsigned char *encrypted;

    int len = encrypt(message, key, encrypted);

    if (len > 0)
    {
        printf("The encrypted message  %s\n", encrypted);
    }

    return 0;
}

1 个答案:

答案 0 :(得分:1)

您需要传递双指针,因为您正在分配内存并复制到函数本地的指针。

以下内容应该有效,但我还没有编译。

int encrypt(unsigned char *message, char *key,  unsigned char **buffered_message)
{
    /* ... */
    *buffered_message = calloc(1, (blocks * block_size));
    /* ... */
    printf("Message: %s\n", *buffered_message);
    return strlen(*buffered_message);
}

从主要

unsigned char *encrypted;
int len = encrypt(message, key, &encrypted);
printf("The encrypted message  %s\n", encrypted);