char *来自char []结构成员

时间:2012-11-04 02:26:39

标签: c struct char

我有一个结构:

typedef struct {
    LogLevel level;
    char message[255];
} LogMessage;

然后我有一个函数接收指向LogMessage结构的指针,并且需要调用一个接收char *的函数:

xStatus = xQueueReceive(xQueueHandleGSMSend, &lReceivedData, portMAX_DELAY);

if(xStatus == pdPASS)
{
    logSimpleMessage(&lReceivedData->message, 1);
}

这是logSimpleMessage函数的原型:

void logSimpleMessage(const char * message, int level);

当我尝试用上面的代码调用它时,我没有得到消息的正确地址(或内容)。如何获取指向lReceivedData消息的char *?

编辑:我试图按照建议使用lReceivedData->消息,但我仍然没有获得正确的地址或值。这是IDE的屏幕上限...我在调试器中做了一些非常错误的事情,因为它似乎应该可以工作。

enter image description here

3 个答案:

答案 0 :(得分:6)

而不是

logSimpleMessage(&lReceivedData->message, 1);

你这么说:

logSimpleMessage(lReceivedData->message, 1);

答案 1 :(得分:3)

&lReceivedData->message

生成数组的地址。数组将在需要时衰减为指针,因此只需使用:

logSimpleMessage(lReceivedData->message, 1);

你无法真正将一个数组传递给一个函数,该数组总是会衰减为指向第一个元素的指针。

答案 2 :(得分:2)

您只需将lReceivedData->message传递给该功能,即可移除&

logSimpleMessage(lReceivedData->message, 1);

传递给函数时,char[]类型会衰减为char*