【发布时间】:2014-12-17 17:17:44
【问题描述】:
我收到此错误消息:传递 x 的参数 1 从指针生成整数而不进行强制转换。在传递一个 int 时,我以同样的方式做了同样的事情,而且效果很好。但是当我用 char 做这件事时,我得到了这个错误。代码:
struct x {
char y;
}
struct x *make(char y)
{
struct x *n = malloc(sizeof(struct x));
n->y = y;
return n;
};
int main(void)
{
make("y");
return 0;
}
我通过将 char 更改为 char * 并使用 strcpy 修复了错误。所以它完美地工作。但我不明白为什么我必须这样做。我用 malloc(sizeof(struct x))? 为整个结构分配内存?那么为什么我必须为char分配额外的内存。这似乎很奇怪。我可能误解了它?那么为什么会这样呢。
【问题讨论】:
-
请缩进你的代码
标签: c memory-management struct char strcpy