Cześć, potrzebuje przestudiować ten kod i wyświetlić to co bezie w konsoli.
Oczywiście kod wklepałem do programu i widze co się wyswietla, ale musze napisac krok po kroku co się dzieje.
Chciałbym byście sprawdzili czy dobrze główkuję, bo w pewnym momencie nie wiem co dalej zrobić.
Linia 8: Wiadomo tworzymy statyczną tablicę dwuwymiarową pod a[0] jest KASIA, pod a[1] jest Ola Ula
Linia 9: Tak samo jak u góry
Linia 11: Tworzymy wskaźnik p na char;
Linia 12; Wyświetli nam się napis KASIA i przejdziemy do kolejnej linii.
Linia 13: Wypisze się, "Marek i ?" Ale nie rozumiem czemu przesyłamy
Linia 14: Pod 10 znak a[1] (czyli Ola Ula) doda się &
Linia 15: Łączymy a[1] czyli Ola Ula & z p, czyli Marek i ?. Finalnie: Ola Ula & Marek i ?
Linia 16: Wypisze to co u góry.
Linia 17: Tutaj się wypisze:
x[0]=11
x[2]=13
I czego nie rozumiem:
4 <<<< nie czaje skąd to się bierze, czy to jest to: b[1] czy jak
Linia: 21
Wypisuje się:
1 2 3
22 12 26
Czyli nie czaje 35 linijki:
#include <stdio.h>
#include <string.h>
char *zm(char *);
int ft(int *);
int main()
{
int i=0,j;
static char a[2][30]= {"KASIA","Ola Ula " };
static int b[2][3]= { {1, 2, 3},{11,12,13}}; //!!! 2 wiersze i 3 kolumny
char *p;
printf("%s\n",a[0]);
printf("%s\n",p=zm(&a[1][0]));
*(a[1]+10)='&'; //!!! znak nr 10 wiersza nr 1
strcat( a[1],p);
printf("%s\n",a[1]);
printf("%u\n",ft(b[1]));
for(i=0; i<2; i++)
{
for(j=0; j<3; j++)
printf("%3d ",b[i][j]);
printf("\n");
}
return 0;
}
int ft(int *x)
{
int i;
for (i=-1; i<2; i++)
{
i=i+1;
printf("x[%d]=%d \n",i,x[i]);
x[i] = 2*x[i];
}
return 0xFD & (i<<1);
}
char *zm(char *x)
{
static char t[2][20]= {"Andrzej oraz Ola", "Marek i x " };
*(&t[1][0]+8)='?'; // znak nr 8 wiersza nr 1
*(x+4)='+'; // znak nr 4 tablicy a w funkcji main
return t[1];
}
Czy przez to, że wszystko jest przekazywane przez wskaznik to zmiany faktycznie nastepuja w wywoalniu funkcji?
W Javie o ile sie nie myle, to wszystko przekazywane jest jako kopia i nie zmienia to oryginalnych wartości zmiennych,a tutaj faktycznie się zmieniają.