surne

Sekcia: Programovanie 13.11.2009 | 21:51
Avatar dzairo Teraz nic  Používateľ
ahoj vsetci .

surne zhanam nejakeho obornika na C.
potrebujem poradit ohladom pola (array)
da niekto cislo komu by som mohol zavolat???

je to surne.
otazka:
jedna funkcia pouziva pole buffer[1024] a vsetko funguje .
ale mam druhu funkciu ktora pouziva pole ale dvoj rozmerne mem[128][64]
a chcel by som nejako sklbyt tie pola dohromady ale aby som pouzival len pole buffer.
ako sa to roby .
proste chcem aby tie pole mem pouzilo rovnaku adresu v pameti ako buffer
    • Re: surne 14.11.2009 | 00:44
             Návštevník
      Ten tvoj problem si mohol aj lepsie popisat. Ako moze pole mem pouzit rovnaku adresu ked 1024 != 8192, kam budes adresovat tych ostatnych 7168 z mem ?
    • Re: surne 14.11.2009 | 04:07
      Avatar Stanislav Hoferek Greenie 18.04  Používateľ
      nabuduce az bude nieco naozaj surne, tak to skus aspon nejako takto: surne zhanam nejakeho odbornika na C

      ano, to co si napisal ty keby si dal do nadpisu, tak by si to ludia ovladajuci C skor vsimli
      • Re: surne 15.11.2009 | 12:22
        Avatar dzairo Teraz nic  Používateľ
        sorry ale nevedel som ako.
        problem je ze som to zle opisal
        to 1024 je bytov a 128*64 je bitov.
        takze vekost pametoveho miesta je rovnaka len ten ukazovatel neviem definovat.


        poriesim to inac

        dakujem
        • Re: surne 16.11.2009 | 10:46
          peto   Návštevník
          nie je na kazdy boolean vyhradzuje byte..
    • Re: surne 16.11.2009 | 02:09
      Avatar Michal Sedlák Debian, Ubuntu  Používateľ
      nie som odbornikm ale asi by to malo fungovat tak ze data su v pamati za sebou

      cize ak by si do oboch poli nacital to iste tak by sa:
      buffer[0] mal rovnat mem[0][0]
      ...
      buffer[63] mal rovnat mem[0][63]
      buffer[64] mal rovnat mem[0][64]
      buffer[65] mal rovnat mem[1][0]
      buffer[66] mal rovnat mem[1][1]
      atd..

      buffer[x] je mem[x / 65][x % 65]
      alebo
      buffer[x*65+y] je to iste ako mem[x][y]

      Mozno su prehodene riadky a stlpce a treba sa pozriet ci delenie integera integerom naozaj vracia int. Data by mali byt rovnakeho tatoveho typu.
      Malo by sa to dat konfertnut aj cez pointery:
      *(buffer + x*sizeof(buffer[0]) + y) je to iste ako *( *(mem+x) + y)
      len si myslim ze treba davat pozor na velkost bunky

      Skusat sa mi to nechcelo, ale snad je pointa spravna.