Ich habe ein array, welches an einer Funktion übergeben wird.
Dort sollen die Werte bearbeitet werden und nach dem Funktionsaufruf die
neuen werte zur Verfügung sein.
Dies funktioniert bei mir aber irgendwie nicht
1 | void funktion1(uint16_t* arr1, uint16_t* arr2, uint8_t length);
|
2 | {
|
3 | for(uint8_t x=0; x<length; x++)
|
4 | {
|
5 | arr2[x] = arr1[x] / 2;
|
6 | printf("arr1[%d]: %d arr2[%d]: %d\r\n", x, arr1[x], x, arr2[x]);
|
7 | }
|
8 | }
|
Die Ausgabe ist dann
1 | arr1[0]: 100 arr2[0]: 50
|
2 | arr1[1]: 100 arr2[1]: 50
|
3 | arr1[2]: 100 arr2[2]: 50
|
4 | ... ... ...
|
Die Funktion rufe ich wie folgt auf
1 | void funktion(void)
|
2 | {
|
3 | uint16_t arr1[10] = {0};
|
4 | uint16_t arr2[10] = {0};
|
5 | for(uint8_t x=0; x<10; x++)
|
6 | {
|
7 | arr1[x] = 100;
|
8 | }
|
9 | funktion1(&arr1[0], &arr2[0], 10);
|
10 |
|
11 | for(uint8_t x=0; x<10; x++)
|
12 | {
|
13 | printf("arr1[%d]: %d arr2[%d]: %d\r\n", x, arr1[x], x, arr2[x]);
|
14 | }
|
15 | }
|
Die Ausgabe ist dann
1 | arr1[0]: 100 arr2[0]: 0
|
2 | arr1[1]: 100 arr2[1]: 0
|
3 | arr1[2]: 100 arr2[2]: 0
|
4 | ... ... ...
|
warum ist arr2 immernoch 0? es wird doch eigentlich in funktion1
geändert?