如果
- 常量指针比普通指针快还是慢?(常量指针是一个不能改变其地址的指针)声明为,int* const x;
- 指向常量 int 的指针比指向 int 的指针快吗?常量 int *x;
- 指向常量 int 的常量指针比指向 int 的指针快吗?例如 int const * const x; 整数* y; ...那么,x 会比 y 快吗?(如果它们用于数组索引)
干杯,
如果
干杯,
它们可能更快,但不一定必须如此。
底线是使用 const 正确性来防止诚实的程序员犯错误并使您的代码更直观,而不是提高性能。大多数现代编译器会自动处理它。
通常,编译器不会“注意”某事是否const
存在,它使用其他启发式方法来确定指针是否需要在使用之间重新加载。
当然,如果您有一个将指针作为参数的函数,那绝对没有区别。如果你有一个你使用的全局变量,那么编译器可能会考虑“嗯,它是const
,所以我不会每次都重新加载它”。但它不太可能真正有所作为。指针的并行更改无论如何都是UB(您应该为此使用原子变量)。如果在代码中间调用了一个函数,并且编译器不能内联[或“跟随”]该函数,它很可能无论如何都必须重新加载指针。