🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.objects
Article #4647

Re: Prawda o C++

#4647
From: Dariusz Slusarczyk
Date: Wed, 20 Jan 1999 19:22
73 lines
3053 bytes
Artur Kidzinski wrote:
> Chyba nigdy nie uzywales tablic w Pascalu...jedyna przewaga C jest
> odwolowyanie sie za pomoca wskaznikow...a dalej niestety popatrz
> tablica : array['a'..'z'] of char; ...zrobisz cos takiego bez sztuczek
> z makrami w C ???

o jakiez to sztuczki z makrami chodzi?

a moze styknie gdy odpowiednio zmodyfikuje index zanim podzialam na
tablicy np. przez odjecie 'a' 
tablica[jakis_index-'a']=x; //gdzie jakis_index nalezy do <'a','z'>
albo zupelnie oleje sprawe i poswiece pierwszych 'a' bajtow, wtedy nie
bede musial modyfikowal indexu
np. 
char tablica['z'+1]; 
 //chyba nie musze mowic dlaczego 'z'+1? :)
for(int i='a';i<='z';i++) //wykorzystujemy tylko 'z'-'a'+1 bajtow
 tablica[i]=i;            

a moze jeszcze lepiej zrobie magiczna sztuczke :) na wskaznikach jak np

char array['z'-'a'+1];
char*ptr=&array[-'a'];
teraz wpisujac
ptr['a']=jakies_cos;
w rzeczywistosci modyfikujemy 
array[0]=jakies_cos; 
nie trza modyfikowac indexu przez np. odejmowanie 'a' za kazdym razem
gdy chcemy podzialac na tablicy, dodatkowo nie ma straty RAMu jak to
bylo w poprzednim przypadku, a indexujemy sobie ladnie od 'a' do 'z'
czyli chyba o to chodzi
eh te prymitywne wskazniki :)))

dla niedowiarkow przykladowy kod

#include <stdio.h>
void main()
{
 int x=0;                  //taki sobie ogranicznik :>
 char trueArray['z'-'a'+1];
 int y=0;                  //taki sobie ogranicznik :>
 char*array=&trueArray[-'a']; //i juz mamy array['a'..'z'] :)
 for(int i='a';i<='z';i++) //lamuchowata indexacja od 'a' do 'z'
  array[i]=i;
 printf("\n%d\n",x);       //to na dowod, ze x nie zostalo nawet tkniete
 for(i='a';i<='z';i++)     //lamuchowata indexacja od 'a' do 'z' 
  printf(" %c ",array[i]);
 printf("\n%d",y);         //to na dowod, ze y nie zostalo nawet tkniete
}

no... ja tu zadnych makr nie widze

ostatecznie mozna uzyc
#define TERMINATOR 'z'+1
i wtedy we FORkach zamiast tego smiesznego i<='z' bedziemy mieli 
rasowe :) i<TERMINATOR

a najlepiej zabudowac wszystko do klasy, przeciazyc operator[] i wiecej
sie tym nie przejmowac :}

> Po pierwsze jezeli wciagasz C++ to zaczyna sie inna bajka....ale
> tablice w C sa naprawde prymitywnym typem...to poprostu zwarta kupka
> bajtow...jedyne co fajne to rozne ciekawe(i dziwne) sposoby ? 
> odwolywania sie od tej kupki...

a czym niby mialaby byc jak nie zwarta qpka bajtow?
 
> Artur K.
-- 
marines()
{ 
 return Dariusz_Slusarczyk; 
}
Technical Details
Message-ID: <36A623E1.A4AF7B72@zeus.polsl.gliwice.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!news.nask.pl!orion.cst.tpsa.pl!news.task.gda.pl!ict.pwr.wroc.pl!m2n-gate.okapi.usenet.pl

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!news.nask.pl!orion.cst.tpsa.pl!news.task.gda.pl!ict.pwr.wroc.pl!m2n-gate.okapi.usenet.pl
From: marines@zeus.polsl.gliwice.pl (Dariusz Slusarczyk)
Newsgroups: pl.comp.objects
Subject: Re: Prawda o C++
Message-ID: <36A623E1.A4AF7B72@zeus.polsl.gliwice.pl>
Date: 20 Jan 99 19:22:40 GMT
Sender: objects@sprocket.ict.pwr.wroc.pl
Organization: Lista dyskusyjna objects@sprocket.ict.pwr.wroc.pl
Lines: 74
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit