Witam serdecznie. Czy ktoś mógłby mi sprawdzić, czy dobrze wykonałem poniższe zadania umieszczone w załączonikach?
Teraz załączniki są bardziej przejżyste :)
Witam serdecznie. Czy ktoś mógłby mi sprawdzić, czy dobrze wykonałem poniższe zadania umieszczone w załączonikach?
Teraz załączniki są bardziej przejżyste :)
Dobrze
Na pewno źle. Tam jest deklaracja tablicy 9 elementowej, powinno być 10.
Ja bym to zrobił tak:
int tab[10];
int *wsk = tab;
wsk += 5;
int liczby[] = { -10, -12, -13, -14, -15 };
for (int i = 0; i < 5; i++)
{
*wsk = liczby[i];
wsk++;
}
tabint[0]-0
tabint[1]-1
tabint[2]-2
(...)
tabint[7]--2
tabint[8]--3
tabint[9]--4
int *wsk1;
int *wsk2;
double *wsk3;
wsk1 = wsk2; // Według mojego kompilatora nie można, bo wskaźnik wsk2 nie był zainicjowany (error C4700: użycie niezainicjowanej zmiennej lokalnej "wsk2")
wsk3 = reinterpret_cast<double *>(wsk1); // To samo co wyżej
wsk3 = (double *)wsk1; // To też
void fun_wsk2(int *wsk)
{
for (int i = 0; i < 10; i++)
{
*wsk += 2;
wsk++;
}
}
int main(int argc, char * argv[])
{
int tablica[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int *wsk = tablica;
fun_wsk2(tablica);
for (int i = 0; i < 9; i++)
{
cout << tablica[i] << " " << endl;
}
system("pause");
return 0;
}
int l;
cout << "Podaj rozmiar tablicy" << endl;
cin >> l;
int *wsk = new int[l];
delete[] wsk;
a) deklaracja tablicy 15 elementów typu int
b) definicja wskaźnika mogącego pokazywać na typ int i ustawienie go na tablicę
c) niepoprawnie, nie podano typu, więc operator new nie może przydzielić pamięci
d) wpisanie do zmiennej, na którą pokazuje wskaźnik, wartości 44
Sprawdzę resztę i edytuje post.
e) błąd, powinno to wyglądać tak: *tab = 44; lub tab[0] = 44;
f) źle
g) wpisanie liczby do 4 elementu tablicy (jeżeli wskaźnik pokazywał na 0 element, 0+3=3 czyli 4 element)
h) to samo co wyżej, tylko, że do 2 elementu
i) powinno być delete[] tab;
j) tak samo jak i)
Ale przecież zero też się liczy. Teraz Twoja tablica " int tab[10] " posiada 11 elementów : 0,1,2,3,4,5,6,7,8,9,10
Nie, przy deklaracji pisze się ile elementów ma pomieścić tablica.
Spróbuj skompilować:
int tab[0];
Nie da się, bo tablica nie może mieć 0 elementów.
Dopiero po deklaracji elementy zaczyna się liczyć od 0.
Ok, dzięki za wyjaśnienie
Piotr020798 napisał(a):
Spróbuj skompilować:
int tab[0];
Nie da się, bo tablica nie może mieć 0 elementów.
Prowadził ślepy kulawego ...
#include <stdio.h>
struct X
{
int x;
char TB[0];
};
int main()
{
char msg[]="Ala ma kota";
struct X *p=(struct X *)malloc(sizeof(struct X)+strlen(msg)+1);
p->x=1;
strcpy(p->TB,msg);
printf("%d -> %s\n",p->x,p->TB);
return 0;
}
Mało tego że można to jeszcze czasami jest przydatne.
Mi chodziło o ten przypadek...