gpt4 book ai didi

c++ - C/C++如何在一次函数调用中交出const函数指针或简单指针

转载 作者:太空宇宙 更新时间:2023-11-04 04:59:08 25 4
gpt4 key购买 nike

我有一个函数 (func1),它获取一个 const 指针 作为参数。该指针的值用于第二个函数 (func2)。根据一个 bool 值,我想在将它传递给 func2 之前修改这个值。如果我必须修改它,我会分配新内存来存储它的修改版本。因为实际上 const int 指针是一个大数组,我不想复制它。我试图以这种方式解决它:

void func1(const int* value, bool change)
{
int* valueToUse;

if(change)
{
int changedValue = (*value)++;
valueToUse = &changedValue;
}
else
{
valueToUse = value; // <= here the Error occurs
}

func2(valueToUse);
}

void func2(const int* foo)
{
// ...
}

但是如果我这样做,我会得到一个错误,因为我将一个 const 指针分配给一个简单的指针:

error: invalid conversion from 'const int* to int*'

有什么简单的方法可以解决这个问题吗?

我可以想象一个解决方案,每个案例都有两个额外的函数,或者一个在两个点调用 func2 的版本。但是因为这里提供的代码只是我的真实代码的一个非常简化的版本,所以我正在考虑是否有更简单的解决方案。

最好是适用于 C 和 C++ 的解决方案。

提前谢谢大家!

最佳答案

这有用吗?

void func1(const int* value, bool change)
{
const int* valueToUse;
int changedValue;

if(change)
{
changedValue = (*value) + 1;
valueToUse = &changedValue;
}
else
{
valueToUse = value;
}

func2(valueToUse);
}

const int* 是指向const int 的指针,它不是指向intconst 指针.因此指针本身可以自由改变。

此外,递增 (*value) 是一个错误,因为 *value 是一个 const int

关于c++ - C/C++如何在一次函数调用中交出const函数指针或简单指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43913064/

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