c - 为 2 个指针分配相同的值,而不是使它们的引用相等(C 中的指针)

标签 c pointers struct char assign

    printf("%p\n\n", element);       //0x1000020c0
    table->head->element = element;
    printf("%p\n\n", table->head->element);   //0x1000020c0

我有一个指向结构的指针,该结构指向存储 char* 变量的另一个结构。问题是发送到此方法的指针(char * 元素)在其他地方被修改,我不希望这些修改在表-> 头-> 元素中受到影响。简单地说我想让它们的值相等,而不是引用。

我知道我们可以为 2 个指针分配相同的值,如下所示:*p1=*p2。但是,我不确定如何使用结构来做到这一点,我尝试过:

    *(table->head->element) = *element;

但是没有用。

我希望我能澄清我的问题。

最佳答案

如果您想要通过副本指向的字符串,而不仅仅是一个引用,您需要将它 strcpy() 到一些新的内存中。例如

int len = strlen(element);
table->head->element = malloc(len+1); // +1 for string-terminating null
strcpy(table->head->element, element);

(或使用 strdup() 作为单线解决方案,如 R Sahu 的回复中所指出)。

关于c - 为 2 个指针分配相同的值,而不是使它们的引用相等(C 中的指针),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28402206/

相关文章:

C++ - 基类指针、方法指针、引用派生类、方法?

c++ - 从基类实例获取指向(纯)虚函数的指针

c - C 中 (float *) 和 *(float*) 的区别

c - 从数组中删除数字?

c - 在 GDB 中使用便利变量的地址

C++ 无法在我的 mac 上运行,未找到架构 x86_64 的符号

c - 纯 C 中的结构奇怪

c - memcpy() 和 memmove() 未按预期工作

c - C中的指针 - 构造矩阵时为 "Segmentation Fault"

c - 在 LKM 中使用 ELF 部分