typedef float vec3[3];
void test(vec3 const vptr) {
*vptr = 1.f; // error: assignment of read-only location
vptr[0] = 1.f; // error: assignment of read-only location
vptr++; // no error
}
是
vec3 const vptr
与...相同
const vec3 vptr
对于所有typedef?最后两个之间有什么区别吗?我想
vec3 const vptr <==> float* const vptr // a constant pointer to an object
const vec3 vptr <==> const float* vptr // a pointer to a constant object
??? <==> const float* const vptr // a constant pointer to a constant object
这个typedef
typedef float vec3[3];
定义数组类型的别名 float[3]
此参数的声明
vec3 const vptr
声明vptr
为具有数组类型const float[3]
。
将指定为具有数组类型的函数参数调整为指向数组元素类型的对象的指针。
所以这个宣言
vec3 const vptr
调整为类型const float *vptr
。那就是它是指向常量对象的非常量指针。
这种关系
vec3 const vptr <==> float * const vptr //指向对象的常量指针
是错的。这句话
vptr++; // no error
确认这一点。
您无法获得此声明
const float* const vptr
使用这个typedef
typedef float vec3[3];
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句