Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Errschaffer

Alter Hase

  • »Errschaffer« ist der Autor dieses Themas

Beiträge: 865

Wohnort: Frankfurt

  • Private Nachricht senden

1

22.10.2008, 15:34

Zeiger auf Array

Hallo,

Ich möchte einen Zeiger auf ein Array erstellen.
Hab das noch nie gemacht sondern nur mit normalen Variabeln.
Er spuckt vollgenden Fehler aus:

1>c:\oliver\c++\projekte\loader\main.cpp(15) : error C2440: 'Initialisierung': 'int' kann nicht in 'int *[4][20]' konvertiert werden

C-/C++-Quelltext

1
2
3
4
5
6
//Array für den Balken

    int balken [4] [20];

    //Zeiger auf Array

    int *pbalken [4] [20]=NULL;
    pbalken [4] [20]=&balken [4] [20];


Muss man Arrays was besonderes beachten oder so?

Errschaffer

Alter Hase

  • »Errschaffer« ist der Autor dieses Themas

Beiträge: 865

Wohnort: Frankfurt

  • Private Nachricht senden

3

22.10.2008, 15:46

Äh.Und wie mache ich es das ich ein Array in einer anderen Funktion verweden kann ohne das komplette Array mit Parameterliste zu übergeben?

4

22.10.2008, 16:09

also, du übergibst einfach das Array, die Variable wird zwar kopiert, aber da es sich um einen Zeiger handelt, hast du quasi das Array übergeben.
Natürlich musst du aufpassen, weil du in der Funktion das Array bearbeitest und keine Kopie davon.
Lieber dumm fragen, als dumm bleiben!

Errschaffer

Alter Hase

  • »Errschaffer« ist der Autor dieses Themas

Beiträge: 865

Wohnort: Frankfurt

  • Private Nachricht senden

5

22.10.2008, 16:25

Ah ok,verstanden.

Danke

6

22.10.2008, 18:50

Zitat von »"Das Gurke"«

Arrays sind Zeiger ;)
Nein! Sie können nur implizit in Zeiger umgewandelt werden, sind aber Arrays. Das sieht man z.B. auch, wenn man den sizeof-Operator anwendet.

7

22.10.2008, 23:18

Genau das wollt ich auch direkt schreiben als ich's gelesen hab ^^ Darin liegt die begründung warum sizeof(x) / sizeof(x[0]) nicht geht! :D

C-/C++-Quelltext

1
int *pbalken = &balken [4] [20];
wäre ein Zeiger auf das Elemente 4,20 ...
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

8

23.10.2008, 10:08

Zitat von »"Deviloper"«

Genau das wollt ich auch direkt schreiben als ich's gelesen hab ^^ Darin liegt die begründung warum sizeof(x) / sizeof(x[0]) nicht geht! :D

C-/C++-Quelltext

1
int *pbalken = &balken [4] [20];
wäre ein Zeiger auf das Elemente 4,20 ...


Und man probiere mal ein Array zu inkrementieren.. :)

9

23.10.2008, 20:54

Zitat von »"drakon"«

Und man probiere mal ein Array zu inkrementieren.. :)
Probiers nicht! :p

Es gibt viele Dinge, die sich unterscheiden. Arrays werden jedoch im Normalfall als Zeiger an Funktionen übergeben und werden dort auch als solche behandelt.

Leider wird in vielen C++-Lehrmitteln zu wenig genau auf Arrays und Zeiger bzw. deren Unterschiede eingegangen...

10

24.10.2008, 17:10

Tjo die werden als Zeiger behandelt weil sie schlicht implizit gecastet werden ;)
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

Werbeanzeige