<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Adresse eines Ints..]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich wollte die Adresse von a in b speichern. Aber das klappt nicht. Wieso?</p>
<pre><code class="language-cpp">int a = 99;
	int b = &amp;a;
</code></pre>
<blockquote>
<p>error C2440: 'initializing' : cannot convert from 'int *' to 'int'</p>
</blockquote>
<p>Wo ist mein Denkfehler?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/193780/adresse-eines-ints</link><generator>RSS for Node</generator><lastBuildDate>Mon, 28 Sep 2026 05:13:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/193780.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 29 Sep 2007 18:27:21 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Adresse eines Ints.. on Sat, 29 Sep 2007 18:27:21 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich wollte die Adresse von a in b speichern. Aber das klappt nicht. Wieso?</p>
<pre><code class="language-cpp">int a = 99;
	int b = &amp;a;
</code></pre>
<blockquote>
<p>error C2440: 'initializing' : cannot convert from 'int *' to 'int'</p>
</blockquote>
<p>Wo ist mein Denkfehler?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1375001</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1375001</guid><dc:creator><![CDATA[notebook]]></dc:creator><pubDate>Sat, 29 Sep 2007 18:27:21 GMT</pubDate></item><item><title><![CDATA[Reply to Adresse eines Ints.. on Sat, 29 Sep 2007 18:30:50 GMT]]></title><description><![CDATA[<p>b muss ein int* sein.</p>
<pre><code>int a = 99;
int *b = &amp;a;
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>falls auf deinem system <em>sizeof(int) == sizeof(int</em>)* ist, und du unbedingt die adresse in einem int speichern willst:</p>
<pre><code>int a = 99;
int b = (int)&amp;a;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1375003</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1375003</guid><dc:creator><![CDATA[Apeman]]></dc:creator><pubDate>Sat, 29 Sep 2007 18:30:50 GMT</pubDate></item><item><title><![CDATA[Reply to Adresse eines Ints.. on Sat, 29 Sep 2007 18:41:40 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>was bedeutet denn &quot;int *b&quot; genau!? Sorry für die blöden Fragen, aber ich bin neu in C++.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1375008</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1375008</guid><dc:creator><![CDATA[notebook]]></dc:creator><pubDate>Sat, 29 Sep 2007 18:41:40 GMT</pubDate></item><item><title><![CDATA[Reply to Adresse eines Ints.. on Sat, 29 Sep 2007 18:48:41 GMT]]></title><description><![CDATA[<p>notebook schrieb:</p>
<blockquote>
<p>Hallo,</p>
<p>was bedeutet denn &quot;int *b&quot; genau!? Sorry für die blöden Fragen, aber ich bin neu in C++.</p>
</blockquote>
<p>int = int-Wert<br />
int* = Zeiger (Adresse) auf int-Wert<br />
int&amp; = Referenz (Aliasname) eines int-Wertes</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1375011</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1375011</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Sat, 29 Sep 2007 18:48:41 GMT</pubDate></item><item><title><![CDATA[Reply to Adresse eines Ints.. on Sat, 29 Sep 2007 18:57:41 GMT]]></title><description><![CDATA[<p>asc schrieb:</p>
<blockquote>
<p>int&amp; = Referenz (Aliasname) eines int-Wertes</p>
</blockquote>
<p>verwirr ihn nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
in seinem code ist &amp; der address-of operator.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1375014</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1375014</guid><dc:creator><![CDATA[Apeman]]></dc:creator><pubDate>Sat, 29 Sep 2007 18:57:41 GMT</pubDate></item><item><title><![CDATA[Reply to Adresse eines Ints.. on Sat, 29 Sep 2007 18:58:14 GMT]]></title><description><![CDATA[<p>Warum MUSS man festlegen von welchem Typ der Wert ist auf den gezeigt wird? Ich meine, ... &amp;foo gibt doch immer einen Int (die Adresse)... bloss warum reicht das nicht aus? Warum muss ich angeben, dass &amp;foo die Adresse zu einem Int, String.. was auch immer ist? Danke schonmal..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1375015</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1375015</guid><dc:creator><![CDATA[notebook]]></dc:creator><pubDate>Sat, 29 Sep 2007 18:58:14 GMT</pubDate></item><item><title><![CDATA[Reply to Adresse eines Ints.. on Sat, 29 Sep 2007 19:06:31 GMT]]></title><description><![CDATA[<p>notebook schrieb:</p>
<blockquote>
<p>Warum MUSS man festlegen von welchem Typ der Wert ist auf den gezeigt wird?</p>
</blockquote>
<p>muss man nicht, du kannst auch einen <em>void</em>* nehmen, um die adresse zu speichern.</p>
<p>notebook schrieb:</p>
<blockquote>
<p>Ich meine, ... &amp;foo gibt doch immer einen Int (die Adresse)</p>
</blockquote>
<p>nö, eine adresse kann total anders aufgebaut sein, als ein 'int', z.b. eine andere bitrepresentation haben. deshalb kann man einem 'int' nicht einfach so eine adresse zuweisen.<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1375017</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1375017</guid><dc:creator><![CDATA[Apeman]]></dc:creator><pubDate>Sat, 29 Sep 2007 19:06:31 GMT</pubDate></item><item><title><![CDATA[Reply to Adresse eines Ints.. on Sat, 29 Sep 2007 19:12:55 GMT]]></title><description><![CDATA[<p>Danke, so langsam taste ich mich ja ran. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Hier mal mein Code:</p>
<pre><code class="language-cpp">int a = 99;
void *b = &amp;a;
cout &lt;&lt; ( b );
</code></pre>
<p>Habe ich jetzt also in meinem Code oben die Adresse im RAM ausgegeben wo 99 gespeichert ist?</p>
<p>Und..<br />
Welche Vorteile/Nachteile hat es, wenn ich explizit angebe von welchem Typ der Wert ist auf den ich zeige? Verstehe Sinn da nicht so ganz, sorry. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> Bitte klärt mich auf!! Gruß! :p :p :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1375020</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1375020</guid><dc:creator><![CDATA[notebook]]></dc:creator><pubDate>Sat, 29 Sep 2007 19:12:55 GMT</pubDate></item><item><title><![CDATA[Reply to Adresse eines Ints.. on Sat, 29 Sep 2007 19:16:58 GMT]]></title><description><![CDATA[<p>notebook schrieb:</p>
<blockquote>
<p>Warum MUSS man festlegen von welchem Typ der Wert ist auf den gezeigt wird? Ich meine, ... &amp;foo gibt doch immer einen Int (die Adresse)... bloss warum reicht das nicht aus? Warum muss ich angeben, dass &amp;foo die Adresse zu einem Int, String.. was auch immer ist? Danke schonmal..</p>
</blockquote>
<p>Das muss und kann man nicht explizit angeben (es gibt eine kleine (halbe) Ausnahme, auf die ich hier nicht eingehen will). Der Typ des Ausdrucks &amp;foo steht unmittelbar fest und wird bedingt durch den Typ von foo. Das int* in deinem Fall hat nicht den Zweck, zu sagen, was &amp;foo sein soll, sondern welchen Typ das Objekt b haben soll, dass mit dem Wert &amp;foo initialisiert werden soll. Deine Frage käme dir sicherlich nicht dann in den Sinn, wenn man schreiben würde:</p>
<pre><code class="language-cpp">int a = 1;
double b = 1;
</code></pre>
<p>Offensichtlich ist es möglich Objekte verschiedenen Typs mit dem gleichen Ausdruck zu initialisieren - der Typ des Ausdrucks ist also nicht bestimmend für den Typ des zu initialisierenden Objektes, andererseits wirkt er aber durchaus begrenzend: Ein int kann nur Zahlen speichern, eine Adresse ist keine Zahl, mithin kann eine int keine Adressen speichern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1375022</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1375022</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sat, 29 Sep 2007 19:16:58 GMT</pubDate></item><item><title><![CDATA[Reply to Adresse eines Ints.. on Sat, 29 Sep 2007 19:17:33 GMT]]></title><description><![CDATA[<p>notebook schrieb:</p>
<blockquote>
<p>Und..<br />
Welche Vorteile/Nachteile hat es, wenn ich explizit angebe von welchem Typ der Wert ist auf den ich zeige?</p>
</blockquote>
<p>einen void* kann man nicht dereferenzieren, bei einem int* weiss der compiler, dass sich an der adresse ein wert vom typ 'int' befindet.</p>
<pre><code>int a = 99;
void *b = &amp;a;
int *c = &amp;a;
*b = 123; // error, compiled nicht, b ist ein void*
*c = 123; // geht weil c ein int* ist. a hat jetzt den wert 123
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1375024</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1375024</guid><dc:creator><![CDATA[Apeman]]></dc:creator><pubDate>Sat, 29 Sep 2007 19:17:33 GMT</pubDate></item><item><title><![CDATA[Reply to Adresse eines Ints.. on Sun, 30 Sep 2007 03:52:01 GMT]]></title><description><![CDATA[<blockquote>
<p>Welche Vorteile/Nachteile hat es, wenn ich explizit angebe von welchem Typ der Wert ist auf den ich zeige?</p>
</blockquote>
<p>Sicherheit.</p>
<ol>
<li>Du kannst ja einen Zeiger z.B. verwenden um einen neuen Wert in eine Variable oder ein Objekt zu schreiben.</li>
<li>C++ ist statisch typisiert, d.h. es muss für jede Stelle im Programm schon während des compilierens bekannt sein um welche Typen es sich handelt.</li>
</ol>
<p>Wenn du (1) und (2) zusammen nimmst, dann folgt daraus automatisch dass in C++ Zeiger typisiert sein müssen.</p>
<p>Beispiel:</p>
<pre><code class="language-cpp">int i;
int* pi = &amp;i; // ein Zeiger auf einen int

char c;
char* pc = &amp;c; // ein Zeiger auf ein char

double d;
double* pd = &amp;d; // ein Zeiger auf ein double

std::string s;
std::string* ps = &amp;s; // ein Zeiger auf einen std::string

*pi = 65; // schreibt 65 als int (=4 byte) nach i
*pc = 65; // schreibt 65 als char (=1 byte) nach c
*pd = 65; // schreibt 65.0 als double (=8 byte, nach IEEE so-und-so) nach d
*ps = 65; // weist der string-variable s den wert &quot;A&quot; zu (65 ist der ASCII code für 'A')

*pi = *pi + *pi; // addiert den wert von i zum wert von i, und weist das ergebnis wieder i zu (65+65 -&gt; 130)
*ps = *ps + *ps; // konkateniert s mit s (&quot;A&quot; + &quot;A&quot;) und weist das ergebnis (&quot;AA&quot;) wieder s zu
</code></pre>
<p>Du siehst also, je nachdem welcher Zeigertyp verwendet wird ist die Operation die aus &quot;*p = 65&quot; oder &quot;*p = *p + *p&quot; entsteht eine ganz andere, da &quot;andere Typen sich anders verhalten&quot;.</p>
<p>Es ist also wichtig zu wissen auf was ein Zeiger zeigt.</p>
<p>BTW: über einen Zeiger hast du vollen Zugriff auf das Objekt auf welches er zeigt. z.B. hat std::string eine Funktion &quot;substr&quot;, welche einen Teil aus dem String &quot;herauskopiert&quot; und zurückliefert:</p>
<pre><code class="language-cpp">std::string s = &quot;ABC&quot;;
std::string* ps = &amp;s;
// die folgenden 2 Zeilen tun dasselbe:
std::cout &lt;&lt; s.substr(1,1); // Zugriff direkt auf s, Aufruf der Funktion &quot;substr&quot; auf das Objekt s
std::cout &lt;&lt; ps-&gt;substr(1,1); // Zugriff über ps auf s, Aufruf der Funktion &quot;substr&quot; auf das Objekt s (weil ja ps auf s zeigt)
</code></pre>
<p>Andere Klassen haben natürlich nicht notwändigerweise ein Funktion &quot;substr&quot;, d.h. der Aufruf oben wäre über einen Zeiger der auf irgendwas zeigt nicht unbedingt möglich. Da der Compiler aber weiss dass der Zeiger auf einen std::string zeigt, geht es.</p>
<p>Ich würde das als &quot;Vorteil&quot; bezeichnen, anderenfalls könnte man mit Zeigern kaum was sinnvolles anstellen, oder würde immer Gefahr laufen an eine Funktion einen Zeiger des falschen Type zu übergeben, was dann zu undefiniertem Verhalten führen würde.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1375163</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1375163</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sun, 30 Sep 2007 03:52:01 GMT</pubDate></item><item><title><![CDATA[Reply to Adresse eines Ints.. on Sun, 30 Sep 2007 08:14:40 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">int i=x;

int* ptrI= &amp;i;
</code></pre>
<p>ptrI Addresse von I aufm Stack</p>
<pre><code class="language-cpp">int *ptrI = new int(x);
</code></pre>
<p>ptrI Addresse von I aufm Heap</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1375182</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1375182</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Sun, 30 Sep 2007 08:14:40 GMT</pubDate></item></channel></rss>