c - 将 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);
}
解决方案
这里
typedef struct Info *infoPtr;
infoPtr
是struct 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 pointer。google
并传递字符串文字
enter("google");
并定义enter()
为
void enter(char *name){ /* Its correct */
/* play with name */
}
推荐阅读
- c++ - 当元素数量可变时,在向量中从用户那里获取输入
- azure-active-directory - Keycloak 可以为 AD 用户保留身份提供程序会话吗
- javascript - 在不同的屏幕尺寸上显示和隐藏内容
- sql - 替换 SQL 中性能不佳的游标
- c# - 无法更新 HubSpot 中的时间戳属性
- python - 这个错误是什么意思,我不明白 '[1006/094704.464:INFO:CONSOLE(1)] "ERROR [object Object]"
- clojure - 列表中的唯一元素
- api - 进度指示器的状态没有变化
- c++ - 转换编码
- jwt - 无法理解 JWT 如何与 RSA 一起使用(中间人攻击?)