array mit unterschiedlichen Dimensionen in C

Gast #2506514
Lesenswert?
• ▲
▼
Hallo,

ich habe folgende Problemstellung. Ich habe für unterschiedliche Indexe 
eines Arrays unterschiedliche Anzahl an Strings. Dazu siehe folgendes 
Beispiel:

Index 1: "String1", "String2"
Index 2: "String3"

Nun möchte ich diese Informationen in ein Array packen. Dazu habe ich 
folgenden Code zur Initialisierung:

const char* varString1[]    = {"String1", "String2"};
const char* varString3[]    = {"String3"};

const char** variable[] =
{
    varString1,
    varString3,
};

Ich habe nun ein Array variable, das für jeden Index unterschiedliche 
Längen haben kann. Gucke ich mir die Variablen varString1 und varString3 
im Speicher an so muss ich feststellen, dass diese im RAM stehen. Was 
muss ich ändern, damit die Variablen im ROM stehen.

Vielen Dank im voraus für eure Hilfe!

Grüße
Basti
Gast #2506516
Lesenswert?
• ▲
▼
Also ich habe in den Tutorials und mit Hilfe der Suchfunktionen nichts 
brauchbares gefunden:

Ich habe die Lösung aber hier gefunden:
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka9590.html

Also der Code muss folgendermaßen aussehen:

const char* const varString1[]    = {"String1", "String2"};
const char* const varString3[]    = {"String3"};

const char* const* variable[] =
{
    varString1,
    varString3,
};
Gast #2506537
Lesenswert?
• ▲
▼
Um es genau zu sagen ging es um einen v850 Controller aber das tut 
eigentlich nichts zur Sache.  ;-)

Dieses Beispiel sollte mit jedem Compiler (also auch Controller )laufen 
also auch mit einem AVM, ARM usw. Oder sehe ich da was falsch ???? :-O

Grüße
Basti
#2506602
Lesenswert?
• ▲
▼
Basti schrieb:
> Um es genau zu sagen ging es um einen v850 Controller aber das tut
> eigentlich nichts zur Sache.  ;-)
>
> Dieses Beispiel sollte mit jedem Compiler (also auch Controller )laufen
> also auch mit einem AVM, ARM usw. Oder sehe ich da was falsch ???? :-O

Du siehst das insofern falsch, als es in C eigentlich kein RAM oder ROM 
gibt. Insofern ist nicht gesagt, dass etwas das const ist, in einem 
'ROM' landet. Ob das so ist und wie das genau funktioniert, definiert 
dein Compiler und nicht die Sprache C.
Gast #2506973
Lesenswert?
• ▲
▼
Basti schrieb:
> Um es genau zu sagen ging es um einen v850 Controller aber das tut
> eigentlich nichts zur Sache.  ;-)
>
> Dieses Beispiel sollte mit jedem Compiler (also auch Controller )laufen
> also auch mit einem AVM, ARM usw. Oder sehe ich da was falsch ???? :-O

Zu dem, was Karl Heinz geschrieben hat, kommt noch dazu, daß z.B. der 
AVR separate Adressräume für RAM und Flash hat, auf die auf 
Assembler-Ebene mit unterschiedlichen Instruktionen zugegriffen werden 
muß. Daher reicht da ein einfaches const nicht aus.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.