Witam. Jestem nowy i mam problem...

0

Dlaczego to nie działa:

struct{
char *wyglad;
int cena;
}samochod[300];

samochod[0].wyglad="czerwony";

main(){
...
}

[Serdecznie przepraszam przez przypadek kliknąłem na edycję, zamiast odpowiedź - Dryobates [wstyd] ]

0

Nie sądzisz, że powinineś już w kodzie przyporządkowywać wartości?

struct{
char *wyglad;
int cena;
}samochod[300];

main(){
samochod[0].wyglad="czerwony";
...
}

0

Ale chcialbym ich uzywac w innych funkcjach, nie tylko w main... Co mam w takim wypadku zrobic? :-|

0

Przeczytaj kurs c/c++... [nuda]

0

Witam
Możesz zrobić takie przypisanie w ciele każdej funkcji której kod znajduje sie po twoim kawałku kodu . Tylko to MUSI być wewnątrz ciała funkcji , czyli między { } .
Mam pytanie : co sie dzieje gdy napiszemy coś takiego :
char *p;
p="jakis tekst"
czy wtedy w trakcie dzialania programu zostanie zarezerwowana pamięć dla "jakis tekst" , a jej adres przypisany do p ?? Niby to oczywiste ale lepiej sie upewnić

0

Tez tak probowalem ale sie nieda, zeby przypisac stringa do struktury musisz zrobic tak:

#include
struct{
char *wyglad;
int cena;
}samochod[300];

void jakas_funkcja()
{
strcpy(samochod[0].wyglad,"czerwony") ;
}

main()
{
//....

}

0

nie możesz tak zrobić , bo nie mamy pamięci zarezerwowanej dla tego wskaźnika wygląd , to jest tylko wskaźnik , a tekst czerwony zostanie PRZEPISANY od adresu na który wskazuje ten wskaźnik , a gdyż nie ma zarezerwowanej dla niego pamięci to będziemy pisac po czyms innym !!
mam racje ?? niech ktoś mi powie czy dobrze myśle :
co sie dzieje gdy napiszemy coś takiego ( u mnie sie da ):
char *p;
p="jakis tekst"
czy wtedy w trakcie dzialania programu zostanie zarezerwowana pamięć dla "jakis tekst" , a jej adres przypisany do p ??

0

TrOuBLE - ja niestety nie znam odpowiedzi na twoje pytanie, jedynie domyslam sie, ze NIE.
Skoro w tym poscie zostal poruszony taki temat to nie bede wstawial nowego tematu do forum i zapytam tutaj.
Mam sobie cos takiego:

struct TUserInfo
{
String Nick, IP, LogAs, ComName, OS, AwMsg;
int SH;
TDateTime Joined, Away;
} UI[100];

Pytanie brzmi: czy deklarujac taka strukture w programie trzeba rezerwowac dla niej jakas pamiec ?
Moj program dzialal ok (prawie) dopuki do tej struktury nie dopisalem zmiennych Joined i Away. To znaczy samo dopisanie nic nie zmienilo, uzywalem tych zmiennych w roznych czesciach programu i bylo ok ale... gdy w zdarzeniu OnCreate formy glownej dopisze:

UI[100].Joined = Now();

... to podczas dzialania programu wyskakuje qpa bledow, praktycznie nic nie da sie zrobic poniewaz co chwila wyskakuje blad typu: Acces violation at adress... Read of adress...
To juz nie pierwszy taki przypadek i nie wiem co zrobic, poruszalem juz podobne zagadnienie w poscie: [C++] Jakies anomalie?
Przez to bździdlo nie moge pisac dalej programu :(

0

co do pytania MatroXa :
nigdy nie korzystałem z obiektów : String i TDateTime , ale wydaje mi sie że nie trzeba nic rezerwować . tylko sprawdź czy Now() na pewno zwraca wartość którą można przypiać do obiektu TDateTime . Najlepiej poczytaj dokładnie o tym obiekcie , ja ci nie powiem bo nie wiem ( wiem , niezbyt zadowalająca odpowiedź ) .
A jak to źle działa to użyj innej funkcji i innego obiektu , na pewno da sie to zrobić na 1000 innych sposobów .
co do mojego problemu :
to każdy sie ze mną zgodzi , że można zrobić cos takiego :
char tab[]="tekst";
a to jest praktycznie to samo co :
char *tab="tekst";
a w takim razie czemu :
char *tab;
tab="tekst";
miało by działać inaczej ??
ja myśle że przy tym ostatnim przypisaniu program rezerwuje pamiec dla "tekst" i przypisuje jej adres do tab
prosze powiedzcie co o tym myślicie bo to mi spokoju nie daje .

0

Wiec... sam odpowiem na swoje pytanie bo wlasnie znalazlem blad. Az wstyd napisac ale... deklarujac cos takiego: UI[100] deklarujemy 100 objektow w zakresie 0-99 a nie 1-100. Glupi blad.
Ale tu zauwazylem, ze Delphi mialo jednak swoje plusy poniewaz deklarujac cos takiego w Delphi:
UI: array[1..100] of integer;
i probujac przypisac cos elementowi UI[101] wyskaiwal blad kompilatora i wiadomo bylo o co chodzi, a w Builder'rze mozna przypisac wartosc nawet elementowi UI[999] i bedzie niby "OK".

TrOuBLE mam pytanko tdo ciebie: Dlaczego nie uzywasz String'ow ?
W ogole zauwazylem, ze malo osob tego typu uzywa :-/

0

rzeczywiście głupi błąd , ale to pewnie dlatego , że nie zaczynałeś od C , jak dla mnie to na kostce do gry jest 6 pól : 0,1,2,3,4,5 :)
a co do stringów jeszcze nie bawiłem sie w VC++ lub Builderze ( a bardzo zamierzam :) ) a jak zaczne to zamierzam korzystać już z tych typów , w sumie chyba wole ten typ od innych , np. fig ;)

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