Mitenkäs tämmöinen tehdään C++:lla?

Mitenkäs C :llä tehdään muuttujan muuttuja?

PHP:llä se menee näin
$a = 'hello';
$$a = 'world';
101401
Äänestä

Muut lukivat myös

Vastaukset 10

Vanhimmat

char a = 'a';
char *b = &a;

Äänestä
  • Mutta eihän tuo ole sama asia.

    Selitän vielä mitä tuo PHP-scripti tekee

    $a = 'hello';
    $$a = 'world';

    tuolloin $hello muuttujassa on tuo world sana.

    Äänestä

  • Jerat5 kirjoitti:

    Mutta eihän tuo ole sama asia.

    Selitän vielä mitä tuo PHP-scripti tekee

    $a = 'hello';
    $$a = 'world';

    tuolloin $hello muuttujassa on tuo world sana.

    string hello("world");

    Äänestä


  • masa123456778 kirjoitti:

    string hello("world");

    Hmmm... ei tuo toimine niinkuin pitää. Eikös tuo ole sama kuin string hello = "world";?

    Tarkoitus on nimenomaan sama toiminta kuin

    $a = 'hello';
    $$a = 'world';
    tuolloin $hello muuttujassa on tuo world sana.

    ja kun tuota muuttaa

    $a = 'muuttuja';
    $$a = 'world';
    tuolloin $muuttuja muuttujassa on tuo world sana.

    Äänestä

  • ohwhy?? kirjoitti:

    En enää ihmettele miksi PHP:llä tehdyissä web-sovelluksissa on niin paljon aukkoja. Vaikuttaa kohtuullisen vaaralliselta ominaisuudelta ottaen huomioon missä kieltä käytetään.

    http://en.wikipedia.org/wiki/Code_injection#Dynamic_Evaluation_Vulnerabilities_-_Dynamic_Variable_Evaluation

    "En enää ihmettele miksi PHP:llä tehdyissä web-sovelluksissa on niin paljon aukkoja. Vaikuttaa kohtuullisen vaaralliselta ominaisuudelta ottaen huomioon missä kieltä käytetään."

    Niin no, empä sanoisi tuota mitenkään vaaralliseksi, jos muuttujat alustetaan niinkuin ne kuuluu jolloin mitään vaaraa ei ole. Siis samaa tasoa kuin register_global = on asetus. Tuolloin esim http://x.com?safevar=bad sijoittaa tuon bab sanan suoraan $safevar muuttujaan.

    Suurinsyy miksi PHP:llä tehdyissä web-sovelluksissa on paljon aukkoja on että kieli on pintapuolisesti helppo oppia, jolloin huonoilla taidoilla ja tietoturvasta mitään tietämättä saa näkyvää aikases ja lähdetään tekemään isojakin sovelluksia.

    Ihan yksinkertaisillakin jutuilla saa aukkoja aikases, esim aikoinaan kun Ylen sivut krakkeroitiin niin koodissa oli ihan include($_GET['sivu'] . '.php');

    Toki PHP:ssä on moni asia huonosti ja pikkuhiljaa asiat korjaantuu joka taasen hajottaa huonosti tehtyjä scriptejä.

    Äänestä

  • Jerat5 kirjoitti:

    Mutta eihän tuo ole sama asia.

    Selitän vielä mitä tuo PHP-scripti tekee

    $a = 'hello';
    $$a = 'world';

    tuolloin $hello muuttujassa on tuo world sana.

    Eli halutaan määritellä muuttuja nimeltään hello, joka osoittaa merkkijonoon "world".

    Onnistuu C:n johdannaisilla suoraan:

    char *hello = "world";

    Äänestä

Katso php tulkin c kielisestä koodista.

Äänestä

Suoraan se ei tule onnistumaan koska muuttujien nimet ovat vain apuna koodatessa.
Mutta käyttäen map luokkaa pääsee aika lähelle.

Esim.

map muuttujat;

muuttujat["a"] = "Hello";
muuttujat[muuttujat["a"]] = "World";

cout

Äänestä

Se tehdään paremmin. Jos annat jonkin esimerkin koodista, joka todella tarvitsee tätä ominaisuutta, voi kokenut C -ohjelmoija näyttää turvallisemman, toimivamman ja paremman tavan rakentaa tämä logiikka.

Äänestä

Kommentoi aloitusta


Jerat5 kirjoitti:

Mitenkäs C :llä tehdään muuttujan muuttuja?

PHP:llä se menee näin
$a = 'hello';
$$a = 'world';

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu