Question: That's how if, for example, I have a task from my teacher and have it upload to my own github account.

Then it makes mistakes every time I write like this:

```
git init

```

Error are:

> 
> Reinitialized existing Git repository in
>  C:/Users/ImGuud/Documents/NetBeansProjects/HelloWorld/.git/
> 
> 
> 

i have read: [Does running git init twice initialize a repository or reinitialize an existing repo?](https://stackoverflow.com/questions/5149694/does-running-git-init-twice-initialize-a-repository-or-reinitialize-an-existing) 

But what I want it to do is be the upload to my own github and not the former github that I have clone from.

Answer: 
In all the scenario's (possibilities) you gave, the values need to be in memory, either as variables or as values to initialize variables with. So there is not much difference in the memory footprint. Using initialization functions has the overhead of code bytes required to execute the initialization.

Having one static array containing all the values, and that you index every time you need a value, has the overhead of instructions to index the array. Copying the values of an array index to a "working set" variable has the overhead of the extra variable.

Possibly you can measure which is smallest by making several versions, e.g.:

* one static array that is indexed for each parameter access;
* one static array and copying the working set to an extra variable;
* initializing a working set variable using an initialization function.

But this assumes the working set of values can change during execution. If they don;t change, then you can use `#define`s to select the working set of values and use that for static initialization of the working set variables.
This is short and clean:

```
static const T_EEPROM FactoryEepromConfig[CONFIG_COUNT] =
{
{DEFINE_PARAM1_CONFIG_1, DEFINE_PARAM2_CONFIG_1, DEFINE_PARAM3_CONFIG_1, [...],     DEFINE_PARAMx_CONFIG_1},
{DEFINE_PARAM1_CONFIG_2, DEFINE_PARAM2_CONFIG_2,DEFINE_PARAM3_CONFIG_2, [...],     DEFINE_PARAMx_CONFIG_2},
[...]
};

void InitFactoryEEPROM (size_t type)
{
    assert(type < CONFIG_COUNT);
    MyConfig = FactoryEepromConfig[type];
}

```

to avoid globals you can change the function to this:

```
void InitFactoryEEPROM (T_EEPROM* config, size_t type)
{
    assert(type < CONFIG_COUNT);
    *config = FactoryEepromConfig[type];
}

```