在C中调用函数时如何将参数“ const”更改为“ non-const”

时间:2019-03-10 00:44:33

标签: c pointers

当其他函数调用该函数时,我遇到了问题。

我的功能是如此:

for

编译时收到警告。问题是我无法更改参数的类型。

3 个答案:

答案 0 :(得分:0)

在C语言中,您可以直接对其进行强制转换以删除'const'属性。

void *table_lookup(const table *t)
//Here I want to call my other function. 
table_remove((table*)t)   // remove 'const' by directly casting.
...
return

void table_remove(table *t)
...

答案 1 :(得分:0)

可以放弃const限定词:table_remove((table *)t);,但是如果table_remove试图修改table结构,您可能会遇到麻烦,例如,如果将其存储在只读段中。

因此,您不应这样做。查找功能无论如何都会修改表,这是非常意外的。如果这样做是出于正当理由(例如,建立哈希表或维护缓存),则不应将参数声明为const

答案 2 :(得分:0)

是的,没错。放弃const限定词是个坏主意。 。我也无法添加新功能。 ((table)*)出现问题。