c - 给struct中的ptr赋值(C)

标签 c

我已经在我的 .h 文件中声明了一个结构,如下所示:

struct node{
char* string;
}

我打算创建一个结构,例如,有一个成员,一个名为 string 的字符指针。

现在,我计算出字符串的长度,并 malloc 一个适当大小的数组,并以此作为输入。

char* test;
test = (char*) malloc( n * sizeof(char) );

据我所知,这已经创建了字符指针测试,并已将其指定为指向我刚刚 malloc 的数组的头部。然后我继续将每个数组槽分配给用户输入的字符,然后我读回它 - 这一切都可以正常编译和工作。当我尝试将此字符指针分配给传入此结构的结构节点中的字符指针时,我的问题就来了,如:

int f1( struct node* new ){

所以我尝试将结构中的指针分配给指向数组的指针的值,如下所示:

new->string = test;

但是我有段错误。

对我来说,这似乎是我将一个 char* 分配给需要 char* 的东西,所以这应该可以正常工作……我可能遗漏了一些愚蠢的东西,但是有人能给我指明方向吗?非常感谢!

最佳答案

检查 f1() 的调用方并确保您的参数有效

这会起作用:

struct node *you = malloc(sizeof(struct node));
if (you)
{
    f1(you);
    free(you);
} 

这也是:

struct node me;
f1(&me);

这行不通

struct node *me;
int f1(me);

关于c - 给struct中的ptr赋值(C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13406657/

相关文章:

c - 帕斯卡三角形

c++ - C 和 C++ 中的可变长度数组 (VLA)

c++ - 在 Windows 内核设备驱动程序中使用 fprintf

c - MPLAB IDE 8.85 有条件地包含 header

c - 使用 openCv 和 c 保存图像

c - 使用 I/O 重定向不会将多个空行压缩到一个空行中 (C)

c - 如何为网格中的所有标签添加 css 样式上下文提供程序?

c++ - 指针:C++ 要求所有声明都有类型说明符

c - 如何以编程方式创建证书签名请求 (CSR)?

c - Windows 10 中的原始 UDP 套接字导致网络问题