【发布时间】:2018-01-27 10:31:24
【问题描述】:
我有以下结构:
struct foo
{
...
char* cp;
};
我想将struct foo 类型指针传递给函数,但我希望函数将指针转换为const char* const cp,并且我不希望const 限定符作为@ 定义的一部分987654326@。将函数声明为:
void func (const struct foo* foo_i);
将确保指针cp 不变,但它指向的数据不变。有没有办法声明函数以确保数据也是只读的?
【问题讨论】:
-
所以你想把红色的车当成蓝色的车而不用喷漆?
-
这根本不可能。除了使
cp成为指向const char的指针。 -
您能否详细说明为什么您想要这个?您想解决的真正问题是什么?请read about the XY problem 想想这个问题(以目前的形式)是否可能是一个问题?
-
@Someprogrammerdude 我认为我的问题不属于 XY 类别。显然,函数应该接受指向
const的指针以确保数据不会更改是有充分理由的。有很多函数可以接受这样的const指针,或者const的const数组,其中const不是类型定义的一部分(例如,查看aio_suspend)。我只是问当指针在struct内时如何声明函数 -
@alk,添加
const限定符不会改变类型,这是红车与蓝车的问题吗?
标签: c pointers struct constants