Problem dotyczący wskaźników.

0

Witam Wink
Postanowiłem trochę się zainteresować programowaniem i już na początku pojawił mi się problem.

#include<stdio.h>
int main(){

   int ilosc;
   int *pilosc;

   *pilosc=&ilosc;

   scanf("%d",ilosc);
   printf("oto:%d",*pilosc);

   return(0);
}

Analizuję to sobie tak:
Mam zmienną liczbową ilosc. Mam wskaźnik pilosc wskazujący na liczbę.
Pod wskaźnik pilosc podstawiam adres zmiennej ilosc. Teraz wskaznik pilosc wskazuje na zmienną ilosc. Do zmiennej ilosc wkladam jakąś liczbę. Wyświetlam to na co pokazuje wskaznik pilosc.
No i niestety to tylko teoria bo mi to nie działaSad Wyskakuje mi segmentation fault. Może mi ktoś z tym pomóc?

0
#include<stdio.h>
int main(){

   int ilosc;
   int *pilosc;

   pilosc=&ilosc;

   scanf("%d",&ilosc);
   printf("oto:%d",*pilosc);

   return(0);
}

Jeżeli chcesz podstawić adres do zmiennej, nie musisz używać "operatora wyłuskania" czyli "*" On służy w tym przypadku do wyłuskania wartości kryjącej się pod tym adresem..
Jeżeli chciałbyś nadać wartość obszarowi znajdującemu się w wskaźniku pilość, wtedy zastosujesz ten operator:

*pilosc = 25;

a do przypisania mu adresy wystarczy jego nazwa:

pilosc=&ilosc;</code=c>
0

co do powyższego, ten kod jest równoważny z:

#include<stdio.h>
int main(){
 
   int ilosc;
   int *pilosc;
 
   pilosc=&ilosc;
 
   scanf("%d",pilosc);
   printf("oto:%d",ilosc);
 
   return(0);
}
0

ok dzięki:)
A dlaczego musi być

scanf("%d",&ilosc);

a nie może być bez &?
Myślałem że & wydobywa mi adres zmiennej, czyli to wygląda tak jakbym podstawiał coś pod adres zmiennej czyli zmieniał ten adres, a nie samą wartość zmiennej.

0

Scanf potrzebuje adresu do zmiennej, żeby móc zmienić jej wartość.

0

Dziękuję.
Nie chcę zakładać nowego tematu więc kolejne pytanie zadam tutaj:
Jak użyć extern dla stałej? zadeklarowaną mam ją w pliku modul.c a potrzebna jest w modul.h. Dopisuję na początku extern MAX, ale to nie działa.

0

dla stałej z #define czy const? bo jeśli define, to dajesz w pliku .h #define STAŁA wartość a w plikach .c tylko #include tego pliku .h.

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