作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我希望数组中的变量指向给定的对象:
typedef struct Object {
void *key;
struct Object *top;
struct Object *next;
} Object;
typedef struct Table{
Object *linkedObjects;
size_t size, originalSize;
HashFcn hfun;
PrintFcn pfun;
ComparisonFcn fcomp;
} Table;
Boolean InsertObject(TableP table, ObjectP object)
{
int i = (*table->hfun)(object->key, table->size);
table->linkedObjects[i] = object;
}
从之前的问题中,我了解到执行此操作 table->linkedObjects[i]
会取消对象的引用,这就是为什么我在分配给类型“Object”时收到错误不兼容的类型输入“ObjectP”
。我如何告诉此时的变量指向给定的对象?我尝试做类似的事情:
*(table->linkedObjects[i]) = object;
但这显然不是正确的做法。我还应该释放作为参数获得的对象吗?
最佳答案
假设 ObjectP
被类型定义为 struct Object *
(您在问题中没有提到),请尝试以下操作:
table->linkedObjects[i] = *object;
请记住,这将复制对象
的内容。
如果您不希望出现这种行为,并且希望保留指针,则应将 Table
结构的 linkedObjects
成员声明为 对象 **
或 ObjectP *
。
关于c - 更改数组中变量的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14031667/
COW 不是奶牛,是 Copy-On-Write 的缩写,这是一种是复制但也不完全是复制的技术。 一般来说复制就是创建出完全相同的两份,两份是独立的: 但是,有的时候复制这件事没多大必要
我是一名优秀的程序员,十分优秀!