Home >Backend Development >C++ >Why Can't We Create Arrays of References in C ?
Error: Attempting to Create Array of References
When attempting to declare an array of references, such as:
int a = 1, b = 2, c = 3; int& arr[] = {a, b, c, 8};
the code fails to compile.
Explanation from the C Standard
According to the C Standard §8.3.2/4:
"There shall be no references to references, no arrays of references, and no pointers to references."
Reason for Prohibition
References are essentially aliases to existing objects. They do not occupy memory on their own and do not have an address. Thus, creating an array of references, which is essentially an array of addresses, does not make sense.
Alternative Approach
To achieve similar functionality, you can create a class or struct that encapsulates a reference, as demonstrated in the provided code snippet:
struct cintref { cintref(const int &ref) : ref(ref) {} operator const int &() { return ref; } private: const int &ref; void operator=(const cintref &); }; int main() { int a = 1, b = 2, c = 3; cintref arr[] = {a, b, c, 8}; }
By using this approach, you can simulate an array of references through objects that hold reference values.
The above is the detailed content of Why Can't We Create Arrays of References in C ?. For more information, please follow other related articles on the PHP Chinese website!