wskaźniki w c

Odpowiedz Nowy wątek
2015-01-16 19:39
Krwawy Kaczor
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

Pozostało 580 znaków

2015-01-16 19:42
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.


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...
edytowany 1x, ostatnio: Shalom, 2015-01-16 19:49
mam wrażenie, że brakuje gdzieś nie w tym zdaniu :P - twonek 2015-01-16 19:48

Pozostało 580 znaków

2015-01-16 19:46
Krwawy Kaczor
0

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

Pozostało 580 znaków

2015-01-16 19:47
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

Pozostało 580 znaków

2015-01-16 19:48
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.


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

2015-01-16 19:50
Krwawy Kaczor
0

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

Można uzyskać adres adresu ?

Pozostało 580 znaków

2015-01-16 19:55
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.


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

2015-01-16 19:57
Krwawy Kaczor
0

Ok dzięki za pomoc !!

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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