<?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[typedef und pointer]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe ein Verständnisproblem mit Pointern und typedefs.<br />
Es geht um folgenden Codeabschnitt:</p>
<pre><code class="language-cpp">unsigned char a[10];
	unsigned char *b=a;
	a[0]++;
	b[0]--;
</code></pre>
<p>Dieser kompiliert einwandfrei.</p>
<p>Dasselbe mit Typedefs:</p>
<pre><code class="language-cpp">typedef unsigned char tSha1Hash[20];
tSha1Hash c;
	tSha1Hash *d=c;
	c[0]++;
	d[0]--;
</code></pre>
<p>Bringt den Fehler:</p>
<blockquote>
<p>error: cannot convert âunsigned char<em>â to âunsigned char (</em>)[20]â in initialization</p>
</blockquote>
<p>(Fehler in der Zeile</p>
<blockquote>
<p>tSha1Hash *d=c;</p>
</blockquote>
<p>)</p>
<p>Wenn ich allerdings folgendes tue,</p>
<pre><code class="language-cpp">tSha1Hash c;
	tSha1Hash *d=&amp;c;
	c[0]++;
	d[0]--;
</code></pre>
<p>erhalte ich die Fehlermeldung<br />
error: cast to non-reference type used as lvalue<br />
error: invalid lvalue in assignment<br />
in der Zeile mit</p>
<pre><code class="language-cpp">d[0]--;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/246121/typedef-und-pointer</link><generator>RSS for Node</generator><lastBuildDate>Fri, 18 Sep 2026 09:32:09 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/246121.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 23 Jul 2009 10:39:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to typedef und pointer on Thu, 23 Jul 2009 10:39:47 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe ein Verständnisproblem mit Pointern und typedefs.<br />
Es geht um folgenden Codeabschnitt:</p>
<pre><code class="language-cpp">unsigned char a[10];
	unsigned char *b=a;
	a[0]++;
	b[0]--;
</code></pre>
<p>Dieser kompiliert einwandfrei.</p>
<p>Dasselbe mit Typedefs:</p>
<pre><code class="language-cpp">typedef unsigned char tSha1Hash[20];
tSha1Hash c;
	tSha1Hash *d=c;
	c[0]++;
	d[0]--;
</code></pre>
<p>Bringt den Fehler:</p>
<blockquote>
<p>error: cannot convert âunsigned char<em>â to âunsigned char (</em>)[20]â in initialization</p>
</blockquote>
<p>(Fehler in der Zeile</p>
<blockquote>
<p>tSha1Hash *d=c;</p>
</blockquote>
<p>)</p>
<p>Wenn ich allerdings folgendes tue,</p>
<pre><code class="language-cpp">tSha1Hash c;
	tSha1Hash *d=&amp;c;
	c[0]++;
	d[0]--;
</code></pre>
<p>erhalte ich die Fehlermeldung<br />
error: cast to non-reference type used as lvalue<br />
error: invalid lvalue in assignment<br />
in der Zeile mit</p>
<pre><code class="language-cpp">d[0]--;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1748124</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1748124</guid><dc:creator><![CDATA[joey99]]></dc:creator><pubDate>Thu, 23 Jul 2009 10:39:47 GMT</pubDate></item><item><title><![CDATA[Reply to typedef und pointer on Thu, 23 Jul 2009 10:42:33 GMT]]></title><description><![CDATA[<p>b ist ein pointer auf unsigned char, d ist ein pointer auf ein array von unsigned char. Der typedef geht auf den gesamten Ausdruck, also inclusive des Array. Und dass die beiden nicht kompatibel sind sagt die Compilermeldung <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/1748129</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1748129</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 23 Jul 2009 10:42:33 GMT</pubDate></item><item><title><![CDATA[Reply to typedef und pointer on Thu, 23 Jul 2009 10:52:49 GMT]]></title><description><![CDATA[<p>Achso, danke !</p>
<p>Nur was kann ich tun?<br />
Mein eigentliches Problem ist folgendes:</p>
<pre><code class="language-cpp">typedef unsigned char tSha1Hash[20];

fillvalues(unsigned char *wert); // vorgegebene Funktion vom Betriebssystem

void foo(tSha1Hash *outHashValue) {
   unsigned char xywerte[3000];
   fillValues(xywerte);
// rückgabe der Werte an outHashValue:
	for(unsigned int i = 0; i &lt; SHA1_SIZE; i++) 
		outHashValue[i]=md_value[i];
}
</code></pre>
<p>Bei der Zuweisung, dann:</p>
<blockquote>
<p>error: incompatible types in assignment of âunsigned charâ to âunsigned char [20]â</p>
</blockquote>
<p>Denke mir ist klar woher der Fehler kommt, nurwie kann ich ihn vermeiden?</p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1748141</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1748141</guid><dc:creator><![CDATA[joey99]]></dc:creator><pubDate>Thu, 23 Jul 2009 10:52:49 GMT</pubDate></item><item><title><![CDATA[Reply to typedef und pointer on Thu, 23 Jul 2009 11:58:45 GMT]]></title><description><![CDATA[<p>Unter C++ kannst Du hervorragend eine Referenz auf das Array übergeben:</p>
<pre><code class="language-cpp">void foo(tSha1Hash &amp;outHashValue) {
   unsigned char xywerte[3000];
   fillValues(xywerte);
// rückgabe der Werte an outHashValue:
    for(unsigned int i = 0; i &lt; SHA1_SIZE; i++)
        outHashValue[i]=md_value[i];
}
</code></pre>
<p>(Alternativ kannst Du den Zeiger-auf-das-Array zu einem Array dereferenzieren:</p>
<pre><code class="language-cpp">void foo(tSha1Hash *outHashValue) {
   unsigned char xywerte[3000];
   fillValues(xywerte);
// rückgabe der Werte an outHashValue:
    for(unsigned int i = 0; i &lt; SHA1_SIZE; i++)
        (*outHashValue)[i]=md_value[i];
}
</code></pre>
<p>)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1748169</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1748169</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Thu, 23 Jul 2009 11:58:45 GMT</pubDate></item></channel></rss>