gpt4 book ai didi

c - 将指针从指针数组复制到另一个变量的直接赋值是否有效?

转载 作者:行者123 更新时间:2023-11-30 15:56:44 25 4
gpt4 key购买 nike

我正在尝试将指针数组复制到新变量。我不确定以下直接分配是否是执行复制的正确方法。

SVECTOR **features = (SVECTOR **) malloc(n*sizeof(SVECTOR *));
for(i = 0; i < n; i++){
features[i] = getFeature();
}
SVECTOR **new_features = features; // Doubt: 1
SVECTOR *feature = features[0]; // Doubt: 2

最佳答案

尝试 1 为您提供了一个别名 - features 和 new_features 引用相同的数组。尝试 2 为您提供第一个功能的别名。

对于浅拷贝(如果 getFeature() 返回的指针指向的值从未被修改或释放,就足够了),是

SVECTOR **new_features = malloc(n * sizeof *features);
memcpy(new_features, features, n * sizeof *features);

如果浅复制不够,那么您需要进行深复制,深复制需要了解功能的结构:

SVECTOR **new_features = malloc(n * sizeof *features);
for(i = 0; i < n; i++){
new_features[i] = cloneFeature(features[i]);
}

关于c - 将指针从指针数组复制到另一个变量的直接赋值是否有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10965187/

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