【发布时间】:2019-02-28 20:14:52
【问题描述】:
我正在学习 c。 我有这个结构:
typedef struct mystuff
{
char* name;
int val;
}MyStuff;
我主要调用:
MyStuff fruit1 ={"watermellon", 1};
我将数据传递给 insertLifo:
insertLifo(myQueue, &fruit1);
这是函数
bool insertLifo(LifoQueue queue, void* data)
在函数内部我想打印数据以便调试:
printf("insertLifo() %s \n", *data);
我收到以下错误:
MemAlloc.c: In function ‘insertLifo’:
MemAlloc.c:42:32: warning: dereferencing ‘void *’ pointer [enabled by default]
printf("insertLifo() %s \n", *data);
^
MemAlloc.c:42:2: error: invalid use of void expression
printf("insertLifo() %s \n", *data);
^
我试过了:
printf("insertLifo() %p \n", (void*)*data);
还有其他方式。
我想完全了解如何使用指针
【问题讨论】:
-
你希望它打印什么?
-
数据的值。在这个例子中是“西瓜”
-
您的
data的类型为void *,因此表达式*data的类型为void。对于void类型的值,您几乎无能为力。但是,您可以将指针转换为不同的指针类型。取消引用这种强制转换的结果可能是有意义的。但是如果你知道要转换成什么类型,那么你应该首先声明一个正确类型的指针,这样就不需要转换了。 -
题外话:后进先出是一个堆栈,而不是队列
-
我尝试转换为 char* 但没有成功。