Hallo,
Ich habe folgendes Problem bzw. folgende Frage:
Wieso kann man Char-Arrys (strings) in Funktionsheader mit "Zeiger" bezeichnen?
Beispiel, wie ich dies meine hier:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
#include <iostream>
using namespace std;
void Test1(char *a, char b[]) // 1. Argument: Wieso ein "*a". Dies zeigt doch, dass es sich um einen Zeiger handelt. 2. Argument: Eindeutig - eine Char-Arry.
{
cout<<a<<endl;
cout<<b<<endl;
cout<<" ----- Werte ausgegeben ----- \n";
}
void Test2(char *a) // Hier ein "echter" Zeiger. Der Wert ist vorer 'a' und dann 'b'.
{
*a = 'b';
cout<<"Adresse:"<<&a<<" Wert:"<<*a<<" Ohne Adresszeichen oder Stern:"<<a<<endl;
cout<<" ----- Wert ausgegeben ----- \n";
}
int main()
{
Test1("Dies ist ein Test","Dies ebenfalls"); // Gleich Strings eintragen
char Str[3]; // 1. Variante
Str[0] = 'a';
Str[1] = 'b';
char Str2[3] = "cd"; // 2. Variante
Test1(Str,Str2); // Strings in Char-Arrys
///////////////////////////////////////////////////////////////////////
char x = 'a';
cout<<"Vor der Funktion:"<<x<<endl; // 'a'
Test2(&x); // Adresse übergeben
cout<<"Nach der Funktion:"<<x<<endl; // 'b' - Zeiger tat seine Arbeit.
cin.get();
}
|
Ausgabe:
Dies ist ein Test
Dies ebenfalls
---- Werte ausgegeben ----
ab
cd
---- Werte ausgegeben ----
Vor der Funktion: a
Adresse: 0x27fee0 Wert:b Ohne Addresszeichen oder Stern:bcd
---- Wert ausgegeben ----
Nach der Funktion:b
Ich hoffe mir kann jemand die Augen öffnen