C# ja suora muistiosoite

überkoodari

Visual C# 2005

Homman nimi on sellainen että pitäisi jotenkin saada pointteriin suora muistiosoite joka on tallennettuna int-muuttujaan. Eräs ActiveX-komponentti palauttaa funktiolla käsittelemänsä tiedon muistiosoitteen (C long-tyyppisesnä, mutta taitaa olla int C#:ssa).

Esim. tyyliin.

unsafe koodia...jne..plaaplaa
{
int *ptr;
int osoite = 3243290490; // hatusta vetäsin

ptr = osoite; /* Tässä kohtaa mennään metsään, kun C# ei ymmärrä */

}

Kääntäjä valittaa seuraavaa: Cannot implicitly convert 'int' to 'int*'. An explicit conversion exists (are you missing a cast?)

Onko olemassa jotain kikka kolmosta ongelman ratkaisemiseksi? Muuten tekisin ohjelman C :lla mutta kun rahkeet ei riitä C :ssa muuhun kuin konsoliohjelmien tekoon ja mikro-ohjainten ohjelmointiin (c-kieli).

Visual Basicilla sain kyllä moisen tempun tehtyä vaikka se on vielä vähemmän osoitin-ystävällinen. Ainut vaan että Basic on tehoton kieli nopeaan prosessointiin, mihin olisi tarvetta. Mitä tehokkaampi kieli, sitä vaikeampaa on, ainakin aluksi.. :) Tarkoitus on kyllä sitä c :kin opiskella (nytkin pari kirjaa lainassa), mutta kun se alku on aina hankalaa.... Snif..

7

1724

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • kjhg

      Tyyppimuunnoksen kanssa pitäisi toimia:

      unsafe
      {
      int* ptr;
      int osoite = 3243290490;
      ptr = (int*)osoite;

      }

      • überkoodari

        Sehän tuli kuin apteekin hyllyltä! Kiitos todella paljon!

        Noin se tosiaan toimii.. On todella "hurjaa" kun C#-kielessä joutuu kirjoittamaan "unsafe"-koodia osoittimien kanssa. Kielen pitäisi olla muka helpompaa, mutta vaikeammaksihan se menee kun helppouden muuria joutuu särkemään..

        Noh, joka kielessä on omat jipponsa; ei auta itku markkinoilla. :)

        Ihan uteliaisuudesta: sattuukohan kukaan tietämään miten osoittimet saa käyttöön javalla (visual j#)? :D

        Kumpi on mielestänne hyödyllisempi kieli: java vai C#? Itse touhuilen pääasiassa sulauttujen järjestelmien/sovellusten kanssa (= elektroniikkaa mukana), eli sellaisessa tarkoituksessa. Mitään pelejä tms. ei ole tarkoitus väsäillä, lähinnä videokuvaa tai ääntä analysoida.


    • kjhg

      Periaatteessa *- merkki tulee tyypin perään eikä osoittimen nimen eteen kuten sen kirjoitit. Jos rivillä esitellään vain yksi osoitin, ei tosin tule virhettä, koska välilyöntien paikoilla ei ole merkitystä.

      int* p1, p2, p3; // Näin
      int *p1, *p2, *p3; // Ei käänny

      • überkoodari

        Kiitti vielä tästäkin vinkistä. Hieman juurtunut tuo osoittimien käyttö c-puolelta.. :)


      • näin?

        int* p1, p2, p3; // Näin
        int *p1, *p2, *p3; // Ei käänny
        ------------

        Onko todellakin noin? Jos on, kielen kehittäjät eivät ole liikaa vaivautuneet säilyttämään c/c :n esittelymuotoja.


      • überkoodari
        näin? kirjoitti:

        int* p1, p2, p3; // Näin
        int *p1, *p2, *p3; // Ei käänny
        ------------

        Onko todellakin noin? Jos on, kielen kehittäjät eivät ole liikaa vaivautuneet säilyttämään c/c :n esittelymuotoja.

        Ainakaan äkkiseltään kun kokeilin, niin ei toiminut. C#-kielessä on jotain tuollaista pientä hämärää, joka kummastuttaa jos siirtyy esim. c/c puolelta suoraan..


      • Mika0800

        vertailu:

        char* s1, s2, s3; // Loogisesti oikeaoppinen tapa, mutta hyvin harva C -ohjelmoija kirjoittaa näin.


        char *s1, *s2, *s3; // C-kieliohjelmoijien eniten käyttämä tapa, vaikka onkin erittäin epälooginen.


        C -kääntäjä yleensä hyväksyy kumman tahansa tavan käytön.

        harjoitustehtävä:

        kirjoita funktio, joka muuntaa kumman tahansa em. merkkijonoista tällaiseksi:

        "char* s1, s2, s3;"


    Ketjusta on poistettu 1 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Huomenna teen sen

      Se on nyt päätetty. Pääsen pois tästä epätietosuudesta.
      Ikävä
      80
      3389
    2. Hakkarainen: persut Venäjän ja Pohjois-Korean tiellä

      Hakkarainen entisenä persujen kärkipoliitikkona tietää, mitä puhuu. https://www.is.fi/politiikka/art-2000010422614.html
      Maailman menoa
      200
      1992
    3. Ilouutinen! Anniina Valtonen heitti jymy-yllätyksen - Tämä ei jätä kylmäksi!

      Ohhoh, tämäpä ylläri! Anniina Valtonen sai puolisonsa kanssa lapsen viime vuoden lopulla. Lue lisää: https://www.suomi2
      Suomalaiset julkkikset
      25
      1901
    4. Fuengirola.fi: Kohuissa rypenyt Jari Sillanpää, 58, harvinaisessa haastattelussa: "Minä haluan..."

      Ex-tangokuningas on kertonut kuulumisiaan Espanjan Aurinkorannikolta. Että ei muuta kuin elämässä etiäpäin, Jari Sillanp
      Kotimaiset julkkisjuorut
      27
      1558
    5. Ootko muuten vieläkään hiffannut

      Että en kuulu sinun maailmaasi? On meissä samaa, ja samaa aaltopituutta oli, mutta tunsin oloni usein hyvin vaivautuneek
      Ikävä
      166
      1405
    6. Miten nyt sanoisin

      tämän sinulle. Oletko mielessäni päivittäin, kysyin itseltäni ja vastaus oli, kyllä olet. Yllätyin, päädyin oudoille tei
      Ikävä
      88
      1395
    7. Susta on tullut

      Ihana nainen. ❤️
      Ikävä
      52
      1109
    8. Mistä vuodesta

      lähtien olet ikävöinyt kaivattuasi?
      Ikävä
      97
      1048
    9. Tämä ei voi jatkua

      Näin. Eilisen jälkeen tulin siihen tulokseen.
      Ikävä
      55
      854
    10. Voitko vain unohtaa

      Minut. En ole sinun arvoisesi
      Ikävä
      59
      840
    Aihe