[PIC] Hilfe bei C18 pointer

OP #1275123
Lesenswert?
• ▲
▼
Hallo!

Ich habe ein paar Fragen zum C18 für PIC.

1. Wie kann ich einen Pointer definieren?
1
char* test;   // Variante 1
2
char *test;   // Variante 2
3
char * test;  // Variante 3

2. Wenn ich einen Pointer habe wie kann ich da Daten reinschreiben? Was 
ist der unterschied bei den beiden Varianten?
1
test  = "Muh";   // Variante 1
2
test  = 'Muh';   // Variante 2

3. Alles was ich mit Stern angebe ist doch die Adresse des Pointers?
1
*test = "Muh";    // Adresse
2
test  = "Muh";    // Inhalt

4. Wie kann ich einen Pointer übergeben?
1
void LCD_WriteString(const rom char *string);  // Prototyp
2

3
.
4
.
5
char *test;
6

7
test = "Muh";
8

9
LCD_WriteString( test );
10
.
11
.

Ich habe diese Pointer schon in der Schule gehasst und ich kenne mich 
noch immer nicht aus damit.

LG
Andreas
#1275146
Lesenswert?
• ▲
▼
Andreas Riegebauer schrieb:
> Hallo!
>
> Ich habe ein paar Fragen zum C18 für PIC.
>
> 1. Wie kann ich einen Pointer definieren?
>
1
> char* test;   // Variante 1
2
> char *test;   // Variante 2
3
> char * test;  // Variante 3

Das ist Jacke wie Hose. Manche mögen es so lieber und andere so.

> 2. Wenn ich einen Pointer habe wie kann ich da Daten reinschreiben? Was
> ist der unterschied bei den beiden Varianten?
>
1
> test  = "Muh";   // Variante 1
2
> test  = 'Muh';   // Variante 2

Einen Pointer richtet man auf das, worauf er zeigen soll. Dazu dient der 
Adressoperator &.

> 3. Alles was ich mit Stern angebe ist doch die Adresse des Pointers?
>
1
> *test = "Muh";    // Adresse
2
> test  = "Muh";    // Inhalt

Du möchtest das nochmal in einem Buch nachlesen :-)
Wenn man den Pointer dereferenziert, dann bekommt man den Inhalt. Dazu 
benutzt man den Dereferenzierungsoperator *.

> 4. Wie kann ich einen Pointer übergeben?
>
1
> void LCD_WriteString(const rom char *string);  // Prototyp
2
> 
3
> .
4
> .
5
> char *test;
6
> 
7
> test = "Muh";
8
> 
9
> LCD_WriteString( test );

Du übergibst die Adresse. Vorher sollte man aber den Pointer auf was 
Vernünftiges zeigen lassen, sonst ist's Essig ;-)
OP #1275265
Lesenswert?
• ▲
▼
>> 1. Wie kann ich einen Pointer definieren?
1
char* test;   // Variante 1
2
char *test;   // Variante 2
3
char * test;  // Variante 3
>
> Das ist Jacke wie Hose. Manche mögen es so lieber und andere so.

Also das ist egal wohin der Stern kommt. Kann ich mal einen Punkt 
abhaken.

>> 2. Wenn ich einen Pointer habe wie kann ich da Daten reinschreiben? Was
>> ist der unterschied bei den beiden Varianten?
1
test  = "Muh";   // Variante 1
2
test  = 'Muh';   // Variante 2
>
> Einen Pointer richtet man auf das, worauf er zeigen soll. Dazu dient der
> Adressoperator &.

Und wie mache ich das genau? So vielleicht? Wo liegt denn eigentlich der 
Unterschied ob ich " oder ' mache?
1
&test = "Muh";

>> 3. Alles was ich mit Stern angebe ist doch die Adresse des Pointers?
1
*test = "Muh";    // Adresse
2
test  = "Muh";    // Inhalt
>
> Du möchtest das nochmal in einem Buch nachlesen :-)
> Wenn man den Pointer dereferenziert, dann bekommt man den Inhalt. Dazu
> benutzt man den Dereferenzierungsoperator *.

Wie kann ich den Inhalt eines Pointers ausgeben?

>> 4. Wie kann ich einen Pointer übergeben?
1
void LCD_WriteString(const rom char *string);  // Prototyp
2
.
3
.
4
char *test;
5

6
test = "Muh";
7

8
LCD_WriteString( test );
>
> Du übergibst die Adresse. Vorher sollte man aber den Pointer auf was
> Vernünftiges zeigen lassen, sonst ist's Essig ;-)

Kannst du mir vielleicht noch ein Beispiel dazuschreiben wie ich den 
Pointer auf etwas vernünftiges zeigen lasse?
#1276030
Lesenswert?
• ▲
▼
Hier ein Beispiel. Nun schnapp Dir aber ein gutes Buch oder Tutorial 
über C und arbeite das mal durch! :-)

1
#include <stdio.h>
2
#include <string.h>
3

4
void rueckwaerts(char*);
5

6
int main()
7
{
8
  char string[] = "Hello World";                    // string anlegen
9
  printf("string: %s\n", string);                    // string ausgeben
10
  
11
  char* stringptr;
12
  stringptr = &string[0];                            // Zeiger ausrichten
13
  printf("string ueber pointer: %s\n", stringptr);  // Ausgeben über den Pointer
14
  
15
  rueckwaerts(stringptr);                            // Ausgabe rueckwaerts ueber Funktion
16
  
17
  return 0;
18
}
19

20
void rueckwaerts(char* text)
21
{
22
  char* ptr;
23
  int i = strlen(text) - 1;                          // Länge des Strings über Bibliotheksfunktion
24
  ptr = &text[i];                                    // Zeiger auf letztes Zeichen setzen
25
  
26
  printf("rueckwaerts: ");
27
  while (i>=0)                                      // jetzt rueckwaerts
28
  {
29
    printf("%c", *ptr);                              // und ausgeben
30
    ptr--;                                          // Zeiger um ein Zeichen weiter zurück setzen
31
    i--;
32
  }  
33
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren