#include <stdio.h>
struct Car {
char manufacturer[20];
char colour[5];
struct Person {
char name[5];
} owner;
};
int main() {
struct Car vechile;
vechile.manufacturer, "Mercedes";
vechile.colour, "Black";
vechile.owner.name, "Jere";
printf ("Car's present owner:", vechile.owner.name);
return (0);
}
Nested-Struct -rakeenteen attribuuttiin viittaus?
15
296
Vastaukset 15
Tuo tulostaa vain tyhjää. Voisiko joku myös pistää vastaavaan koodin käyttäen Pointeria, onko se suomennettuna osoitin, jos jatkossa olen myymässä tuota mustaa Mersuani, esimerkiksi Jarelle, pääseekö tuohon auto-structin sisällä oleva Person structiin viitata jotenkin suoraan, tai siis muistipaikkaan, missä auton omistaja sijaitsee?
Jonkinlainen pointteri-esimerkki samasta koodista olisi mukava.- Anonyymi
Kyllä varmaan vois, jos haluaisi.
- Anonyymi
Nuo tekstit pitäisi kopioida paikalleen char taulukoihin, tutustu esim. strcpy funktioon. Ja printf:ään pitää lisätä %s.
Hienoa, kiitos! Noihin merkkijono-funktioihin, joita C:ssä on tarjollla, pitänee tutustua paremmin, kun nytkin kiikasti siitä, kun en käyttänyt tuota strcpy:tä.
- Anonyymi
Ja tuolla yksinertainen pointteriesimerkki: http://codepad.org/znppI5tI
Tuota olisi ehkä syytä muuttaa niin, että merkkijonoille varattaisiin myös erikseen muisti ja kopioitaisiin sisältö samaan tapaan kuin ilman pointtereita tehdyssä esimerkissä.
Structin varausta ja alustusta varten voisi sitten tehdä erillisen funktion, esim. new_Car(), niin voisi mainissa luoda auton tähän tapaan: struct Car *vechile = new_Car("Black", "Mercedes", "Jere");
Omistajan vaihtoa varten voi tehdä vaikka setterin set_Car_owner(struct Car *vechile);
Tai sitten voi kokeilla koodata vaikka tällaisenkin: set_Person_name(struct Person *owner);
Ja muistin vapautusta varten sitten vielä oma funktio, joku tämän tapainen delete_Car(struct Car *vechile);
Siinähän sitä on vähän harjoittelua. - Anonyymi
Anonyymi kirjoitti:
Ja tuolla yksinertainen pointteriesimerkki: http://codepad.org/znppI5tI
Tuota olisi ehkä syytä muuttaa niin, että merkkijonoille varattaisiin myös erikseen muisti ja kopioitaisiin sisältö samaan tapaan kuin ilman pointtereita tehdyssä esimerkissä.
Structin varausta ja alustusta varten voisi sitten tehdä erillisen funktion, esim. new_Car(), niin voisi mainissa luoda auton tähän tapaan: struct Car *vechile = new_Car("Black", "Mercedes", "Jere");
Omistajan vaihtoa varten voi tehdä vaikka setterin set_Car_owner(struct Car *vechile);
Tai sitten voi kokeilla koodata vaikka tällaisenkin: set_Person_name(struct Person *owner);
Ja muistin vapautusta varten sitten vielä oma funktio, joku tämän tapainen delete_Car(struct Car *vechile);
Siinähän sitä on vähän harjoittelua.Kyllä, malloc() ja free() kannattaa ottaa käyttöön heti alkuvaiheessa, niin ei ala pinomuisti täyttymään. Lisäksi suosittelen tutustumaan linkitettyihin listoihin, joiden avulla saadaan tehtyä dynaamisia tietorakenteita. https://wiki.amigaos.net/wiki/Exec_Lists_and_Queues
Käytännössähän "oman" tietorakenteen eteen lisätään node, jossa on pointterit edelliseen ja seuraavaan. Esimerkissä "hyötyosuus" on tuo TEXT nn_Data[62] merkkijono.
struct NameNode {
struct Node nn_Node; /* System Node structure */
TEXT nn_Data[62]; /* Node-specific data */
};
Käsittely voidaan tehdä castaamalla oma struktuuri node-tyyppiseksi. Tarvittavat funktiot, node- ja listastruktuurit on helppo tehdä itsekin. Minäkin tein ne taannoin matkimalla tuota Amigan rakennetta ja Execin funktioita. - Anonyymi
jerzunposti kirjoitti:
Hienoa, kiitos! Noihin merkkijono-funktioihin, joita C:ssä on tarjollla, pitänee tutustua paremmin, kun nytkin kiikasti siitä, kun en käyttänyt tuota strcpy:tä.
Harrastatko yhtä paljon tätä monologin kirjoittamista omallakin kotisivullasi?
- Anonyymi
Anonyymi kirjoitti:
Kyllä, malloc() ja free() kannattaa ottaa käyttöön heti alkuvaiheessa, niin ei ala pinomuisti täyttymään. Lisäksi suosittelen tutustumaan linkitettyihin listoihin, joiden avulla saadaan tehtyä dynaamisia tietorakenteita. https://wiki.amigaos.net/wiki/Exec_Lists_and_Queues
Käytännössähän "oman" tietorakenteen eteen lisätään node, jossa on pointterit edelliseen ja seuraavaan. Esimerkissä "hyötyosuus" on tuo TEXT nn_Data[62] merkkijono.
struct NameNode {
struct Node nn_Node; /* System Node structure */
TEXT nn_Data[62]; /* Node-specific data */
};
Käsittely voidaan tehdä castaamalla oma struktuuri node-tyyppiseksi. Tarvittavat funktiot, node- ja listastruktuurit on helppo tehdä itsekin. Minäkin tein ne taannoin matkimalla tuota Amigan rakennetta ja Execin funktioita.Niin, sepä olikin vähän niin kuin harjoitustehtäväksi ehdotettu. Samoin noiden merkkijonojen käsittelyssä kannattaa tutustua myös ns. turvallisempiin vaihtoehtoihin, esim. strncpy vs. strcpy.
Noita listoja yms. tietotyyppejähän tosiaan korkeamman tason kielissä on valmiina, mutta C:ssä pitää toteuttaa itse. Tai no onhan niitä kai valmiina kirjastoina C:henkin olemasa, mutta kieli ei suoraan sisällä esim. linkitettyä listaa. - Anonyymi
jerzunposti kirjoitti:
Hienoa, kiitos! Noihin merkkijono-funktioihin, joita C:ssä on tarjollla, pitänee tutustua paremmin, kun nytkin kiikasti siitä, kun en käyttänyt tuota strcpy:tä.
"pitänee tutustua paremmin, kun nytkin kiikasti siitä, kun en käyttänyt tuota strcpy:tä."
Hei jerzunposti, sinulla kyllä näytää kiikastavan ihan liikaakin.
Miten niin monologia? En harrasta monologia, en ole yhtään kommenttia kirjoittanut tänne "Anonyymi"nä, kuten jotkut näyttää sitäkin harrastavan, vaikka todellisuudessa ei ole anonyymejä.
Ihmiselle on syntymän jälkeen annettu jokin nimi, ja niillä sitten toimitaan.- Anonyymi
Mitäs sää Anonyymi nyt pimahdit? Vai olinko se minä?
- Anonyymi
Anonyymi kirjoitti:
Mitäs sää Anonyymi nyt pimahdit? Vai olinko se minä?
Hmm.. kylläpä täältä hassusti katoaa viestejä, kun vastaukset liitetään sitten ihan eri kommenttiin kuin mihin oli alun perin vastattu.
- Anonyymi
Anonyymi kirjoitti:
Hmm.. kylläpä täältä hassusti katoaa viestejä, kun vastaukset liitetään sitten ihan eri kommenttiin kuin mihin oli alun perin vastattu.
Koko ketju joutaa pois, tälläistä roskaa ei tarvita.
- Anonyymi
Luokalleen jääneistä paras
Ketjusta on poistettu 3 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
- 65938
- 69702
- 133636
Miksi meille jäi
Niin huonot välit vaikka meistä kumpikaan ei ole tunteilleen mitään voinut. Ehkä se kohtalo on sitä mieltä ettei kuitenk37605- 68567
Viesti sinulle
Tiedät että tunteet ja ajatukset ja meillä on vahva yhteys mistä molemmat tiedetään. Odotan sinua ☀️33562- 43544
SAHIMÄKI LOPETA
Miksi käyt Tupamäen Pekan kimppuun.?? Hänen asia mitä hän tekee tiloillaan. Oletko omista POTKUISTASI yhä katkera turve43541Rakas, rakkaampi, rakkain
Olen tullut siihen johtopäätökseen, ettei minun kannata rakastaa. Kaikki joita olen koskaan rakastanut vain kohtelevat m112515Haluan purkaa vielä tuntemuksia
Tykkään sinusta kovin paljon❤️ olen surullinen tilanteestasi ja siitä mitä me olemme yhdessä joutuneet kokemaan. Tämä ei19490Tunteiden käsittely kertoo ihmisestä.
Kun puhutaan "tavallisesta" ihmisestä, joka on suht tasapainoinen eläjä, niin puhutaan oikeastaan taitavasta tunteiden k166457Ketä ajattelen
kun mietin, mitä sinulle kuuluu? En tunne sinua oikeasti, ja se on ehkä hyvä, koska jos tietäisin enemmän, se varmaan v18451Pilkettä sunnuntain silmässä
😉 Jos tästä ketjusta löytyisi yksi ihminen, joka saisi sut hymyilemään tänään… Millainen hän olisi? Ei tarvitse kerto61372- 52369
Mitä sinulle on tapahtunut lapsena
Kun olet noin sairas päästäsi? Pikkupojalle ( Miehen kehossa)29354- 42349
- 16341
YLINEN pilaa Ähtärin mahdollisuudet.
Vuodeosastopäätös jossa Nina Ylinen (sdp) äänesti niiden lopettamisen puolesta, hoitajille potkut ja silti arviointimene22338Kuhmolaiset valittaa kaikesta
Ootte te kyllä yksiä sanonko mitä... Kaikesta uudesta ja kaupunkia kehittävästå löytyy aina muutama vinkuja kun ei mene9338En aio ottaa sinuun yhteyttä nainen
Saatan minä olla aika tyhmä välillä mutta sentään sen verran kuitenkin tajuan että annan sinun olla rauhassa. En siis ol17330