Error [1131] type mismatch in assignment
Mittwoch, 23. Mai 2012
 
 

PIC Mikrocontroller Forum  |  PIC Mikrocontroller  |  Programmiersprache C  |  Error [1131] type mismatch in assignment « vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: Error [1131] type mismatch in assignment  (Gelesen 353 mal)
 
hennesf
Newbie
*
Offline Offline

Beiträge: 9


Profil anzeigen
« am: November 04, 2011, 16:05:49 »

Hallo,

ich habe eine char Variable mit einem Textstück angelegt und versuche mit Hilfe eines Pointers den Inhalt innerhalb einer Schleife auf einem LCD auszugeben. Dabei bekomme ich die Meldung aus dem Betreff, bezogen auf die erste Zeile mit dem *pString

Hier die entsprechenden Codeteile:

   char String[] ="Mein Name ist:";

   char *pString;

        pString = &String;

Controller PIC 18F2550, Compiler MCC 18

Was ist da falsch?

Danke für eure Antworten.
Gespeichert
Bernd
Globaler Moderator
Hero Member
*****
Offline Offline

Beiträge: 3815



Profil anzeigen
« Antworten #1 am: November 05, 2011, 00:57:48 »

Zitat
Was ist da falsch?

Der Name des Arrays ist bereits dessen Adresse. Folgendes wäre korrektes C:

Code:
pString = String;
// oder auch
pString = &String[0];

Viele Grüße

Bernd
Gespeichert

hennesf
Newbie
*
Offline Offline

Beiträge: 9


Profil anzeigen
« Antworten #2 am: November 05, 2011, 12:47:20 »

Servus Bernd, danke für deine Antwort.

Habe auf deinen Rat folgendes probiert:

   char String[] = "Mein Name ist:";
   pString = &String[0];

Das führt zu einem Syntax Error auf die erste Zeile. Und Folgendes:

        char String[] = "Mein Name ist:";
   *pString = &String[0];

führt zum gleichen Fehler, in gleicher Zeile. Kann es etwas zu tun haben mit dem Speicherbereich, Programm- oder Data Memory, in dem Statische Stringkonstanten abgelegt werden, was bei der Pointerdeklaration berücksichtigt werden muß?

Ich sollte noch erwähnen, dass ich noch einigermassen frisch im C-Geschäft bin Verlegen.
Danke für deine Antwort.
Gruß Hans

Problem gefunden.

Der Fehler war, daß die Zuweisung der Pointeradresse unmittelbar unter der Declaration des String stand. Nachdem ich

*pString = &String[0];

in das Hauptprogramm main verlegt habe, lief die Kompilierung und auch das Programm. Zu blöd von mir, Anfänger eben.
Schönes Wochenende und vielen Dank noch mal.
« Letzte Änderung: November 05, 2011, 19:52:50 von hennesf » Gespeichert
Edson
Globaler Moderator
Sr. Member
*****
Offline Offline

Beiträge: 373



Profil anzeigen
« Antworten #3 am: November 06, 2011, 01:06:59 »

Hallo Hennes,

*pString = &String[0];

vorsicht, dieser Ausdruck weist dem char, auf den pString zeigt, eine (16Bit-)Adresse zu. Ich glaube nicht, dass das so gewollt ist.

kompilierbares Programm != stabiles Programm

Gruß,
Edson
Gespeichert
Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  

Powered by MySQL Powered by PHP Made for Mozilla (Firefox) Made for Internet Explorer
Seite erstellt in 0.042 Sekunden mit 17 Zugriffen.
 
Top! Top!