wskaźniki w c

0

Witam,
mam pytanie odnośnie wskaźników w jezyku c.
Jeśli
int i=7
int **q1
int *t[10]
to czy q1=&(&i) , q1=&t jest poprawne ?
Pozdrawiam

0

Sprawdź?
Ale wydaje mi sie że są nie poprawne bo &i czyli adres zmiennej i jest wartością i nie można dla niej pobrać adresu.

0

Kompilując wyskakuje error: lvalue required as unary '&' operand

0
q1 = &(&i)

&i to nie jest żaden obiekt w pamięci, więc nie możesz pobrać adresu

int* p = &i;
q1 = &p;

to już przejdzie, bo p to zmienna, która gdzieś istnieje w pamięci, więc można pobrać jej adres

0

A no właśnie ;) Bo można pobrać tylko adres czegoś co leży gdzieś w pamięci. A wynik &i nie leży bo to tylko wartość.
W drugim przypadku prawdą byloby q1=t bo nazwa tablicy może być zrzutowana na adres do pierwszego elementu.

0

Właśnie w drugim juz ogarnąłem i miałem pisać.

Można uzyskać adres adresu ?

0

Nie bo adres to jest wartość! Wyobraź sobie że operator & zwraca na przykład zawsze liczbę 1. Ta liczba nie siedzi nigdzie w pamięci. W trakcie działania programu może ona być przerzucana pomiędzy rejestrami procesora i nigdy nie znaleźć się w pamięci.

0

Ok dzięki za pomoc !!

1 użytkowników online, w tym zalogowanych: 0, gości: 1