gpt4 book ai didi

结构中的 C 字符串

转载 作者:太空宇宙 更新时间:2023-11-03 23:29:48 24 4
gpt4 key购买 nike

我希望我的结构携带一个字符串。我这样定义它:

typedef struct myStruct {
char* stringy
} myStruct

还有一个函数

free(char *stringy){
//structObj is a struct object
structObj->stringy = stringy
}

这是正确的吗?感觉既然是局部变量,stringy就会丢失,指针指向垃圾。

抱歉,C 的新手。

最佳答案

如果你以某种方式使用 char** stringy,那将是垃圾,但是 structObj->structObj->stringy = stringy 意味着“你知道 stringy 指向?现在 structObj->stringy 指向那个”。当然,仍然可以取消设置指针指向的值,此时取消引用将产生垃圾。

下面是一个更清楚的例子:

 #include<stdio.h>
typedef struct mStruct {
char* stringy;
} myStruct;

myStruct * structObj;

void doSomething(char* stringy)
{
structObj->stringy = stringy;
}

int main(int argc, char* argv)
{
char* a = "abc\n";
structObj = malloc(sizeof(myStruct));
doSomething(a);
a = "qxr\n";
printf(structObj->stringy);
}// prints "abc\n"

关于结构中的 C 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18605097/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com