Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Jesko Böhm Geändert vor über 7 Jahren
1
ESP Tutorium Studienassistent: Ewald Moitzi E-Mail: prog-tutor-ewald@iicm.tugraz.at Gruppe 1
2
Finde den Fehler 1 char text[5]; strcpy (text, "hallo"); printf ("%s\n",text); char text[5]; strcpy (text, "hallo"); printf ("%s\n",text); ? Ausgabe:
3
Finde den Fehler 1 char text[5]; strcpy (text, "hallo"); printf ("%s\n",text); char text[5]; strcpy (text, "hallo"); printf ("%s\n",text); ? Ausgabe: hallo$%§$&45
4
Finde den Fehler 1 char text[5]; strcpy (text, "hallo"); printf ("%s\n",text); char text[5]; strcpy (text, "hallo"); printf ("%s\n",text); ? Ausgabe: hallo$%§$&45
5
int check_value = 1; if (check_value == 0); { printf ("in if\n"); } printf ("after if\n"); int check_value = 1; if (check_value == 0); { printf ("in if\n"); } printf ("after if\n"); ? Ausgabe: Finde den Fehler 2
6
int check_value = 1; if (check_value == 0); { printf ("in if\n"); } printf ("after if\n"); int check_value = 1; if (check_value == 0); { printf ("in if\n"); } printf ("after if\n"); ? Ausgabe: in if after if Finde den Fehler 2
7
int check_value = 1; if (check_value == 0); { printf ("in if\n"); } printf ("after if\n"); int check_value = 1; if (check_value == 0); { printf ("in if\n"); } printf ("after if\n"); ? Ausgabe: in if after if Finde den Fehler 2
8
void getNextEven(unsigned int number) { if ((number % 2) == 1) number++; } void getNextEven(unsigned int number) { if ((number % 2) == 1) number++; } Ausgabe: Finde den Fehler 3 int number = 3; getNextEven(number); printf ("%d\n",number); ?
9
void getNextEven(unsigned int number) { if ((number % 2) == 1) number++; } void getNextEven(unsigned int number) { if ((number % 2) == 1) number++; } Ausgabe: 3 Finde den Fehler 3 int number = 3; getNextEven(number); printf ("%d\n",number); ?
10
void getNextEven(unsigned int number) { if ((number % 2) == 1) number++; } void getNextEven(unsigned int number) { if ((number % 2) == 1) number++; } Ausgabe: 3 Finde den Fehler 3 unsigned int number = 3; getNextEven(number); printf ("%d\n",number); ?
11
Finde den Fehler 4 char text[5]; strcpy (text, "hallo"); printf ("%s\n",text); char text[5]; strcpy (text, "hallo"); printf ("%s\n",text); ? Ausgabe:
12
Finde den Fehler 5 int array[5]; array[5] = 123; printf ("%d\n",array[5]); int array[5]; array[5] = 123; printf ("%d\n",array[5]); ? Ausgabe:
13
Finde den Fehler 5 int array[5]; array[5] = 123; printf ("%d\n",array[5]); int array[5]; array[5] = 123; printf ("%d\n",array[5]); ? Ausgabe: 123
14
Finde den Fehler 5 int array[5]; array[5] = 123; printf ("%d\n",array[5]); int array[5]; array[5] = 123; printf ("%d\n",array[5]); ? Ausgabe: 123
15
Finde den Fehler 6 float number = 1.1; if (number == 1.1) printf ("number == 1.1\n"); else printf ("number != 1.1\n"); float number = 1.1; if (number == 1.1) printf ("number == 1.1\n"); else printf ("number != 1.1\n"); ? Ausgabe:
16
Finde den Fehler 6 float number = 1.1; if (number == 1.1) printf ("number == 1.1\n"); else printf ("number != 1.1\n"); float number = 1.1; if (number == 1.1) printf ("number == 1.1\n"); else printf ("number != 1.1\n"); ? Ausgabe: number != 1.1
17
Finde den Fehler 6 float number = 1.1; if (number == 1.1) printf ("number == 1.1\n"); else printf ("number != 1.1\n"); float number = 1.1; if (number == 1.1) printf ("number == 1.1\n"); else printf ("number != 1.1\n"); ? Ausgabe: number != 1.1
18
Zahlenrepräsentation Zahlensysteme Binär (Basis 2) Octal (Basis 8) (in C z.B. 0123) Dezimal (Basis 10) (in C z.B. 123) Hexadezimal (Basis 16) (in C z.B. 0x123) Hexadezimal 0 – 9 +
19
Zahlenrepräsentation 195948557: Dezimal → Hex Durch Zielbasis dividieren, Rest von rechts nach links anschreiben
20
Zahlenrepräsentation 0xBEEF : Hex → Dezimal Von rechts nach links: Wert x 16 mit Stelle potenzieren
21
Dynamischer Speicher #include void *malloc (size_t size); void free (void *base_ptr); void *realloc(void *base_ptr, size_t size);
22
Dynamischer Speicher - Hinweise Neuer Speicherblock ist uninitialisiert Freigeben nicht vergessen Pointer auf freigegebenen Speicher (Speichermüll!) Nach..alloc() immer auf NULL überprüfen (Speicher voll?) realloc(): tmp pointer verwenden! realloc(): vorsicht in funktionen VALGRIND VERWENDEN!!
23
Valgrind Bei gcc mit –g kompilieren Aufruf Valgrind Tutorial > http://www.student.tugraz.at/weinberger/esp/valgrind/ valgrind --tool=memcheck --leak-check=yes./name
24
Mehrdimensionale Arrays Auch mehrdimensionale Arrays liegen sequentiell im Speicher: n.d. 0x2740 0x2744 0x2748 0x274B 0x274F 0x2743 int array[2][2]; array befindet sich an der Speicherstelle 0x2740 Zugriff auf 2. Element der 2. Dimension: array[1][1] oder: *(*(array + 1) + 1) Beide Notationen liefern den Wert an der Stelle 0x274B n.d. array[0][0] array[0][1] array[1][0] array[1][1] array
25
Finde den Fehler 7 int *pointer; pointer = malloc (10 * sizeof (int)); *pointer = 1; printf ("%d\n", *pointer); int *pointer; pointer = malloc (10 * sizeof (int)); *pointer = 1; printf ("%d\n", *pointer); ? Ausgabe:
26
Finde den Fehler 7 int *pointer; pointer = malloc (10 * sizeof (int)); *pointer = 1; printf ("%d\n", *pointer); int *pointer; pointer = malloc (10 * sizeof (int)); *pointer = 1; printf ("%d\n", *pointer); ? Ausgabe: Segmentation fault (möglicherweise)
27
Finde den Fehler 7 int *pointer; pointer = malloc (10 * sizeof (int)); *pointer = 1; printf ("%d\n", *pointer); int *pointer; pointer = malloc (10 * sizeof (int)); *pointer = 1; printf ("%d\n", *pointer); ? Ausgabe: Segmentation fault (möglicherweise)
28
Finde den Fehler 8 int *pointer; pointer = malloc (10); pointer[9] = 1; printf ("%d\n", pointer[9]); int *pointer; pointer = malloc (10); pointer[9] = 1; printf ("%d\n", pointer[9]); ? Ausgabe:
29
Finde den Fehler 8 int *pointer; pointer = malloc (10); pointer[9] = 1; printf ("%d\n", pointer[9]); int *pointer; pointer = malloc (10); pointer[9] = 1; printf ("%d\n", pointer[9]); ? Ausgabe: 1
30
Finde den Fehler 8 int *pointer; pointer = malloc (10); pointer[9] = 1; printf ("%d\n", pointer[9]); int *pointer; pointer = malloc (10); pointer[9] = 1; printf ("%d\n", pointer[9]); ? Ausgabe: 1
31
Finde den Fehler 9 char *buffer = malloc (16); buffer = realloc (buffer,32); if (buffer == NULL) { free (buffer); } char *buffer = malloc (16); buffer = realloc (buffer,32); if (buffer == NULL) { free (buffer); } ? Ergebnis:
32
Finde den Fehler 9 char *buffer = malloc (16); buffer = realloc (buffer,32); if (buffer == NULL) { free (buffer); } char *buffer = malloc (16); buffer = realloc (buffer,32); if (buffer == NULL) { free (buffer); } ? Ergebnis: Möglicherweise Speicherloch
33
Finde den Fehler 9 char *buffer = malloc (16); buffer = realloc (buffer,32); if (buffer == NULL) { free (buffer); } char *buffer = malloc (16); buffer = realloc (buffer,32); if (buffer == NULL) { free (buffer); } ? Ergebnis: Möglicherweise Speicherloch
34
Finde den Fehler 10 char *argv[2] = {"a.out", "Some" "text"}; int length = strlen(argv[1]); char text[length]; int i; for (i = 0; i < length; i++) text[i] = argv[1][i]; printf("%s\n", text); char *argv[2] = {"a.out", "Some" "text"}; int length = strlen(argv[1]); char text[length]; int i; for (i = 0; i < length; i++) text[i] = argv[1][i]; printf("%s\n", text); ? Ausgabe:
35
Finde den Fehler 10 char *argv[2] = {"a.out", "Some" "text"}; int length = strlen(argv[1]); char text[length]; int i; for (i = 0; i < length; i++) text[i] = argv[1][i]; printf("%s\n", text); char *argv[2] = {"a.out", "Some" "text"}; int length = strlen(argv[1]); char text[length]; int i; for (i = 0; i < length; i++) text[i] = argv[1][i]; printf("%s\n", text); ? Ausgabe: Some text$&/?=
36
Finde den Fehler 10 char *argv[2] = {"a.out", "Some" "text"}; int length = strlen(argv[1]); char text[length]; int i; for (i = 0; i < length; i++) text[i] = argv[1][i]; printf("%s\n", text); char *argv[2] = {"a.out", "Some" "text"}; int length = strlen(argv[1]); char text[length]; int i; for (i = 0; i < length; i++) text[i] = argv[1][i]; printf("%s\n", text); ? Ausgabe: Some text$&/?=
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.