Is there a way to declare a variable like this before actually initializing it?
CGFloat components[8] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.15 };
I'd like it declared something like this (except this doesn't work):
CGFloat components[8]; components[8] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.15 };
We declare an array in Java as we do other variables, by providing a type and name: int[] myArray; To initialize or instantiate an array as we declare it, meaning we assign values as when we create the array, we can use the following shorthand syntax: int[] myArray = {13, 14, 15};
Arrays may be initialized when they are declared, just as any other variables.
It is necessary to initialize the array at the time of declaration. This statement is false.
You cannot assign to arrays so basically you cannot do what you propose but in C99 you can do this:
CGFloat *components; components = (CGFloat [8]) { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.15 };
the ( ){ }
operator is called the compound literal operator. It is a C99 feature.
Note that in this example components
is declared as a pointer and not as an array.
If you wrap up your array in a struct, it becomes assignable.
typedef struct { CGFloat c[8]; } Components; // declare and initialise in one go: Components comps = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.15 }; // declare and then assign: Components comps; comps = (Components){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.15 }; // To access elements: comps.c[3] = 0.04;
If you use this approach, you can also return Components
structs from methods, which means you can create functions to initialise and assign to the struct, for example:
Components comps = SomeFunction(inputData); DoSomethingWithComponents(comps); comps = GetSomeOtherComps(moreInput); // etc.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With