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
सभी typedefs के लिए
ही है? क्या पिछले दो के बीच कोई अंतर है? मैंने सोचा था कि
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
ऐसा नहीं है कि 'vec3 स्थिरांक vptr'' को स्थिरांक नाव * vptr' निकाला जाता है इतना नहीं है का उपयोग करते हुए इस घोषणा
नहीं मिल सकता है। यह सिर्फ एक फ़ंक्शन पैरामीटर के लिए है, दोनों बराबर हैं। – Peter
@ पीटर वे नहीं हैं। ऐरे पैरामीटर वास्तव में निश्चित (मूल रूप से सभी) परिस्थितियों में पॉइंटर्स को समायोजित किए जाते हैं। इस विस्तार को अनदेखा करने से, समायोजित कहने में व्लाड अधिक सही है। – 2501