matematykaszkolna.pl
programowanie Jack: #include <stdio.h> #include <stdlib.h> int main() { int tab[4]={1,2,3,4}; int *wsk1; int *wsk2; int temp1=0, temp2=0,i; wsk1=tab; wsk2=tab[2]; temp1=*++wsk1; temp2=++*wsk2; for (i=0; i<4; ++i) { printf ("Element numer %d = %d\n", i, tab[i]); } printf ("temp 1 = %d \n", temp1); printf ("temp 2 = %d \n", temp2); scanf ("%d", &i); return 0; } Dlaczego program wypisuje blad zamiast sie skompilowac? Jezyk C.
14 lis 01:06
Metis: Sprawdź : #include <stdio.h> #include <stdlib.h> int main() { int tab[4]={1,2,3,4}; int *wsk1; int *wsk2; int temp1=0, temp2=0,i; wsk1=tab; wsk2=(tab+2) ; temp1=*++wsk1; temp2=++*wsk2; for (i=0; i<4; ++i) { printf ("Element numer %d = %d\n", i, tab[i]); } printf ("temp 1 = %d \n", temp1); printf ("temp 2 = %d \n", temp2); scanf ("%d", &i); return 0; }
14 lis 01:15
Dziadek Mróz: #include <stdio.h> #include <stdlib.h> int main() { int tab[4] = {1, 2, 3, 4}; int *wsk1 = tab; int *wsk2 = &tab[2]; int temp1 = 0, temp2 = 0, i; temp1 = *++wsk1; temp2 = ++*wsk2; for (i = 0; i < 4; ++i) { printf("Element numer %d = %d\n", i, tab[i]); } printf("temp 1 = %d \n", temp1); printf("temp 2 = %d \n", temp2); scanf("%d", &i); return 0; }
14 lis 12:57
Jack: dzięki !
14 lis 21:30
Dziadek Mróz: rysunek wsk1 wskazuje na tab, a tab zaczyna się od adresu 0x0, więc wsk1 wskazuje na komórkę w 0x0 wsk2 wskazuje na tab[2], a tab[2] jest w komórce o adresie 0x2, więc wsk2 wskazuje na komórkę 0x2 Gdyby wpisać: wsk2 = &tab[4]; to wyskoczy Segmentation fault bo odnosimy się do komórki 0x4 (rzekomo należącej do tab), a tam zonk bo w komórce jest wsk1
15 lis 14:42
Metis: Wiedziałem, że coś jest nie tak w tamtym miejscu Ale nie patrzę na to jeszcze tak jak ty Dziadkuemotka Dziadku Mrozie , miałeś do czynienia kiedyś z ABAP?
15 lis 17:33