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:
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
Dziadku
Dziadku Mrozie , miałeś do czynienia kiedyś z
ABAP?
15 lis 17:33