const double *bar = (const double *) foo;?
const double *bar = (const double *) foo;?
我正在编写一些变量声明困扰我的 C 代码。实际上代码工作正常,但我不明白!
我有一个看起来像这样的变量声明:
double *foo;
// Here is the "weird" declaration :
const double *bar = (const double *) foo;
如果我认为我理解声明的前半部分并且内存地址或实际值是常量(在这种情况下 bar 是指向 const double 的指针,如果我错了请纠正我?),我不太明白 (const double *)
部分。
这是将指向 double foo 的指针直接转换为 const double 的方法吗?
无论如何,这样的声明有什么好处?
谢谢!
去掉(const double *)部分不就可以了吗?
double *foo;
// Here is the "weird" declaration :
const double *bar = foo;
应该以同样的方式工作
您可以将 "second part" 视为早先声明的指针 foo
double *foo;
被重新声明(重新解释)就像具有类型 const double *
const double *bar = (const double *) foo;
不需要转换。你可以只写
const double *bar = foo;
意思是现在指针bar的值和指针foo的值一样了。那就是两个指针都指向同一个对象。但是知道使用指向与指针 foo 相同的对象的指针 bar 可能不会更改指向的对象。
我正在编写一些变量声明困扰我的 C 代码。实际上代码工作正常,但我不明白!
我有一个看起来像这样的变量声明:
double *foo;
// Here is the "weird" declaration :
const double *bar = (const double *) foo;
如果我认为我理解声明的前半部分并且内存地址或实际值是常量(在这种情况下 bar 是指向 const double 的指针,如果我错了请纠正我?),我不太明白 (const double *)
部分。
这是将指向 double foo 的指针直接转换为 const double 的方法吗?
无论如何,这样的声明有什么好处?
谢谢!
去掉(const double *)部分不就可以了吗?
double *foo;
// Here is the "weird" declaration :
const double *bar = foo;
应该以同样的方式工作
您可以将 "second part" 视为早先声明的指针 foo
double *foo;
被重新声明(重新解释)就像具有类型 const double *
const double *bar = (const double *) foo;
不需要转换。你可以只写
const double *bar = foo;
意思是现在指针bar的值和指针foo的值一样了。那就是两个指针都指向同一个对象。但是知道使用指向与指针 foo 相同的对象的指针 bar 可能不会更改指向的对象。