首页 > 解决方案 > 将 char * 传递给结构

问题描述

所以,我有一个结构成员 char* 并且我想在分配节点内存后对其进行初始化。但是,这种方法让我遇到了 Seg Fault。笔记。是的,我想要一个infoPtr。请原谅任何语法错误,这些不是我要解决的问题。我想要的只是正确地将一个字符字符串传递给名称。

struct Info{
    char *name;
}
typedef struct Info *infoPtr;
int main(void){
    enter("google");
}
void enter(char *name){
    infoPtr* info=(infoPtr)malloc(sizeof(infoPtr));
    info->name=strup(name);
}

标签: cstruct

解决方案


这里

typedef struct Info *infoPtr;

infoPtrstruct Info*类型,这个

infoPtr* info=(infoPtr)malloc(sizeof(infoPtr)); /* info will be of struct Info** type */

应该

infoPtr info = malloc(sizeof(*infoPtr)); /* typecasting is not required */

旁注,它不被认为typedef是指针的好习惯,请阅读typedef 指针是个好主意吗?

也在这里

info->name=strup(name);

你想用strdup()而不是strup()例如

info->name=strdup(name);

来到你的问题我想要的只是正确地将一个 char 字符串传递给 name ?是的,您传递参数的方式enter()是正确的,除了typedefing struct pointergoogle并传递字符串文字

enter("google");

并定义enter()

void enter(char *name){ /* Its correct */
  /* play with name */
}

推荐阅读