0

如果

  • 常量指针比普通指针快还是慢?(常量指针是一个不能改变其地址的指针)声明为,int* const x;
    • 指向常量 int 的指针比指向 int 的指针快吗?常量 int *x;
    • 指向常量 int 的常量指针比指向 int 的指针快吗?例如 int const * const x; 整数* y; ...那么,x 会比 y 快吗?(如果它们用于数组索引)

干杯,

4

2 回答 2

3

它们可能更快,但不一定必须如此。
底线是使用 const 正确性来防止诚实的程序员犯错误并使您的代码更直观,而不是提高性能。大多数现代编译器会自动处理它。

于 2013-07-25T12:11:32.337 回答
0

通常,编译器不会“注意”某事是否const存在,它使用其他启发式方法来确定指针是否需要在使用之间重新加载。

当然,如果您有一个将指针作为参数的函数,那绝对没有区别。如果你有一个你使用的全局变量,那么编译器可能会考虑“嗯,它是const,所以我不会每次都重新加载它”。但它不太可能真正有所作为。指针的并行更改无论如何都是UB(您应该为此使用原子变量)。如果在代码中间调用了一个函数,并且编译器不能内联[或“跟随”]该函数,它很可能无论如何都必须重新加载指针。

于 2013-07-25T12:14:56.477 回答