Witamy na forum PC Format Zapraszamy do REJESTRACJI


Użytkownicy przeglądający ten wątek: 1 gości

[C++] Zestaw pytań "wskazniki typu void"

#1
[C++] Zestaw pytań "wskazniki typu void"
Witam.

1.Stworzę takie coś.
Kod:
void *wsk = new int[5];
Czy muszę usuwać za pomocą "delete [] (int*)wsk:
czy mogę po prostu tak: "delete [] wsk"?


2.Ten kod nie działa:
Kod:
for(i=0;i<maks;i++)
   (int*)tab[i] = i+1;
Jest na to jakiś sposób?
Rozwiązałem używając innego wskaźnika typu void.
Kod:
void *tab = new int[maks];
    void *wsk = tab;
    for(i=0;i<maks;i++)
    {
        *(int*)wsk = i+1;
        wsk += sizeof(int); //albo wpisać "4" zamiast sizeof().
    }

Ale to zwiększa czas wykonywania z 0.307-0.297 na 0.314-0297 + 2 linijek nie potrzebnych więcej.

3.Voidowe wskaźniki są w ogóle dobre? niektórzy piszą że lepiej użyć gotowe funkcje, ale jestem początkującym (tak można powiedzieć) i chcę samodzielnie tworzyć koła na nowo.(np. typ danych string,vector)(vector zrobiłem, teraz chcę listę stworzyć)
 System operacyjny: windows_seven Przeglądarka: chrome
#2
RE: [C++] Zestaw pytań "wskazniki typu void"
Jak w C++ chcesz to pisać to tam masz mechanizm szablonów i nie musisz używać wskaźników na void.
 System operacyjny: windows_seven Przeglądarka: firefox
#3
RE: [C++] Zestaw pytań "wskazniki typu void"
A można zmienić typ danych z float na np. stringa?

Chodzi mi ogólnie o zmiennych i wskaźnikach.
 System operacyjny: windows_seven Przeglądarka: chrome
#4
RE: [C++] Zestaw pytań "wskazniki typu void"
Co do punktu pierwszego:
Cytat:warning: deleting ‘void*’ is undefined
Co do punktu drugiego:
Kod:
((int*)tab)[i] = i + 1;
Poza tym to nie jest dobry sposób (choć poprawny) - przecież można było użyć deklaracji
Kod:
int *tab;
zamiast utrudniać sobie życie.
 System operacyjny: linux Przeglądarka: firefox
#5
RE: [C++] Zestaw pytań "wskazniki typu void"
A to dobry pomysł aby używać funkcję w funkcji, tak aby można byłoby zrobić nieskończoną pętlę?

np.mamy funkcję menu() potem w tej funkcji jest funkcja typu newgame().

Podczas trwania tej funkcji uruchamia się ponownie funkcja menu() a następnie loadgame() i menu();

Zmienne zostaną zniszczone dopiero jak funkcja się skończy.

A może dobrym pomysłem będzie "return funkcja()"?

Kończy,niszczy i rozpoczyna funkcję, a return można używać wiele razy w jednej funkcji.
Czy to tak nie działa?
 System operacyjny: windows_seven Przeglądarka: chrome
#6
RE: [C++] Zestaw pytań "wskazniki typu void"
Napisz lepiej jaki efekt końcowy chcesz uzyskać bo brzmi to zagmatwanie.
 System operacyjny: windows_seven Przeglądarka: firefox
#7
RE: [C++] Zestaw pytań "wskazniki typu void"
(15.12.2014, 18:33)Darekg11 napisał(a): Napisz lepiej jaki efekt końcowy chcesz uzyskać bo brzmi to zagmatwanie.

A więc tak.

Funkcja = pudełko.

Do pudełka dorzucamy przedmioty, (argumenty)

Pudełeczko tworzy sobie potrzebne zmienne i nazywa je po swojemu.(zmienne zajmują pamięć)

pudełeczko[.a.] wywołuje inne pudełeczko. (w tym przypadku nazwiemy go [.b.])
pudełeczko[.b.] wywołuje nowe pudełeczko[.a.].

Zasada jest taka: Po wywoływaniu pudełka zajmuje pamięć dopóki się nie zakończy. (po returnie albo na końcu się niszczy)

Cel: chcę aby pudełko nie wywoływało się w nim, a poza nią.
A następnie te stare pudełeczko się zniszczyło i wyzwoliło miejsce dla nowych pudełeczek.
 System operacyjny: windows_seven Przeglądarka: chrome
#8
RE: [C++] Zestaw pytań "wskazniki typu void"
Wytłumacz to na tym co chcesz uzyskać w kontekście programowania bo dalej nie potrafię zrozumieć co Ty chcesz osiągnąć.

Nie czaję czemu koniecznie musisz znów wywoływać funkcję a z funkcji b (w jaki sposób te funkcje są od siebie zależne?)

Daj jakiś kod ilustrujący ten problem i opis to będzie o wiele łatwiej.
 System operacyjny: windows_seven Przeglądarka: firefox
#9
RE: [C++] Zestaw pytań "wskazniki typu void"
Przykład może i nie jest doskonały ale dobre i to: (bo rozwiązaniem byłoby pętla For w main())
Kod:
#include <iostream>

using namespace std;
class kt
{
    public:
    kt()
    {
        cout << "+";
    }
    ~kt()
    {
        cout << "-";
    }
};

const int maximum = 10;
int licznik = 1;
void fun()
{
    kt klasa;
    if(licznik<10)
    {
        licznik++;
        fun();
    } else return;
}

int main()
{
    fun();
    return 0;
}

wyjście:
Kod:
++++++++++----------

chcę aby obiekt "klasa" i wszystkie zmienne w funkcji się zniszczyły po wywołaniu innej funkcji.

Tak ja chcę:
Kod:
+-+-+-+-+-+-+-+-+-+-

Wątpię aby byłoby to możliwe.
 System operacyjny: windows_seven Przeglądarka: chrome
#10
RE: [C++] Zestaw pytań "wskazniki typu void"
Najpierw poprzednie wywołanie funkcji musi się zakończyć (nie widzę sensu stosowania rekurencji do tak błahego problemu).
 System operacyjny: linux Przeglądarka: firefox
Programy: Polecane / Nowe / Inne




Podobne wątki ([C++] Zestaw pytań "wskazniki typu void")
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Jak napisać program typu konsola poleceń? toslaw1 6 13098 29.06.2017, 18:58
Ostatni post: toslaw1
  Android zamiana Bitmap na Tablice typu byte aht 2 10449 08.02.2016, 11:20
Ostatni post: aht
  błąd w void w borlandzie Chr1stian 14 18894 08.05.2015, 08:10
Ostatni post: Chr1stian

Skocz do: