<?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[Array von einer Funktion zur anderen - wie?]]></title><description><![CDATA[<p>Hallo allerseits. Ich habe hier ein Programm mit zwei Funktionen. Eine davon sammelt ein int Array, das die zweite Funktion wiederum verwendet. Nachdem ich jetzt alles mögliche ausprobiert habe und meine Denkblockade anscheinend gerade zu groß ist, als dass ich auf eine Lösung käme, frage ich einfach mal hier nach:</p>
<p>Wie schaffe ich es, das Array von einer zur anderen Funktion zu bekommen?</p>
<p>Das ganze sieht wie folgt aus:</p>
<pre><code class="language-cpp">void kmp_prefix_table(char *w) {
	int n = 8;
	int i = 0;
	int j = -1;
	int N[2000];

	N[i] = j;

	while (i &lt; n) {
		while (j &gt;= 0 &amp;&amp; w[j] != w[i]) {
			j = N[j];
		}
		i++;
		j++;
		N[i] = j;
	}
}

void kmp_search(char *t, int m, char *w) {

	kmp_prefix_table(w);
	int *N = &amp;N[0];

	cout &lt;&lt; N[1] &lt;&lt; endl;

	int n = 8;
	int i = 0;
	int j = 0;

	while (i &lt; m) {
		while (j &gt;= 0 &amp;&amp; t[i] != w[j]) {
			j = N[j];
		}

		i++;
		j++;

		if (j == n) {
			cout &lt;&lt; i - n &lt;&lt; endl;
		}

		j = N[j];
	}
}
</code></pre>
<p>Von der ersten Funktion soll nun das Array N an die zweite Funktion weitergegeben werden. Wie schaffe ich das?</p>
<p>Danke für jede eventuelle Hilfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/160241/array-von-einer-funktion-zur-anderen-wie</link><generator>RSS for Node</generator><lastBuildDate>Fri, 11 Sep 2026 05:13:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/160241.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 23 Sep 2006 15:56:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Array von einer Funktion zur anderen - wie? on Sat, 23 Sep 2006 15:56:19 GMT]]></title><description><![CDATA[<p>Hallo allerseits. Ich habe hier ein Programm mit zwei Funktionen. Eine davon sammelt ein int Array, das die zweite Funktion wiederum verwendet. Nachdem ich jetzt alles mögliche ausprobiert habe und meine Denkblockade anscheinend gerade zu groß ist, als dass ich auf eine Lösung käme, frage ich einfach mal hier nach:</p>
<p>Wie schaffe ich es, das Array von einer zur anderen Funktion zu bekommen?</p>
<p>Das ganze sieht wie folgt aus:</p>
<pre><code class="language-cpp">void kmp_prefix_table(char *w) {
	int n = 8;
	int i = 0;
	int j = -1;
	int N[2000];

	N[i] = j;

	while (i &lt; n) {
		while (j &gt;= 0 &amp;&amp; w[j] != w[i]) {
			j = N[j];
		}
		i++;
		j++;
		N[i] = j;
	}
}

void kmp_search(char *t, int m, char *w) {

	kmp_prefix_table(w);
	int *N = &amp;N[0];

	cout &lt;&lt; N[1] &lt;&lt; endl;

	int n = 8;
	int i = 0;
	int j = 0;

	while (i &lt; m) {
		while (j &gt;= 0 &amp;&amp; t[i] != w[j]) {
			j = N[j];
		}

		i++;
		j++;

		if (j == n) {
			cout &lt;&lt; i - n &lt;&lt; endl;
		}

		j = N[j];
	}
}
</code></pre>
<p>Von der ersten Funktion soll nun das Array N an die zweite Funktion weitergegeben werden. Wie schaffe ich das?</p>
<p>Danke für jede eventuelle Hilfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1143131</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1143131</guid><dc:creator><![CDATA[Sniffman]]></dc:creator><pubDate>Sat, 23 Sep 2006 15:56:19 GMT</pubDate></item><item><title><![CDATA[Reply to Array von einer Funktion zur anderen - wie? on Sat, 23 Sep 2006 16:20:51 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">void kmp_prefix_table(char *w, std::vector&lt;int&gt;&amp; N)
{
    // ...
}

void kmp_search(char *t, int m, char *w, const std::vector&lt;int&gt;&amp; N)
{
    // ...
}
</code></pre>
<p>Aufruf:</p>
<pre><code class="language-cpp">std::vector&lt;int&gt; N;
kmp_prefix_table (w, N);
kmp_search (t, m, w, N);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1143141</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1143141</guid><dc:creator><![CDATA[Z2]]></dc:creator><pubDate>Sat, 23 Sep 2006 16:20:51 GMT</pubDate></item><item><title><![CDATA[Reply to Array von einer Funktion zur anderen - wie? on Sat, 23 Sep 2006 18:29:28 GMT]]></title><description><![CDATA[<p>nimm anstatt von<br />
&quot;void kmp_prefix_table(char <em>w)&quot;<br />
eben<br />
&quot;int</em> kmp_prefix_table(char *w)&quot;<br />
und schreib am ende rein<br />
&quot;return N;&quot;</p>
<p>dann wo du das array benutzen willst:<br />
N = kmp_prefix_table(BLA);<br />
und N normal benutzen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1143202</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1143202</guid><dc:creator><![CDATA[ä]]></dc:creator><pubDate>Sat, 23 Sep 2006 18:29:28 GMT</pubDate></item><item><title><![CDATA[Reply to Array von einer Funktion zur anderen - wie? on Sat, 23 Sep 2006 18:41:09 GMT]]></title><description><![CDATA[<p>ä schrieb:</p>
<blockquote>
<p>nimm anstatt von<br />
&quot;void kmp_prefix_table(char <em>w)&quot;<br />
eben<br />
&quot;int</em> kmp_prefix_table(char *w)&quot;<br />
und schreib am ende rein<br />
&quot;return N;&quot;</p>
<p>dann wo du das array benutzen willst:<br />
N = kmp_prefix_table(BLA);<br />
und N normal benutzen</p>
</blockquote>
<p>Wobei noch zu erwähnen ist, daß das Array innerhalb der Funktion mit new erzeugt werden muß (bloß nicht Zeiger auf lokale Variable zurückgeben!). Außerdem muß das Array irgendwo wieder mit delete [] freigegeben werden. Und darüber hinaus, unterläuft ein nacktes Array leicht die Exception Sicherheit, weswegen man oft einen try-catch-Block braucht. Schlußfolgerung: std::vector ist um Welten einfacher.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1143209</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1143209</guid><dc:creator><![CDATA[Z2]]></dc:creator><pubDate>Sat, 23 Sep 2006 18:41:09 GMT</pubDate></item><item><title><![CDATA[Reply to Array von einer Funktion zur anderen - wie? on Sat, 23 Sep 2006 18:59:33 GMT]]></title><description><![CDATA[<p>Ich würde das Array an beide Funktionen übergeben und es generell von aussen kommen lassen. Somit wird es eigentlich ziemlich egal ob man ein native array nimmt oder einen vector.</p>
<p>btw.: der vector lässt es bei verwendung von op[] auch krachen und wirft nur bei at() eine entsprechende Exception.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1143214</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1143214</guid><dc:creator><![CDATA[Knuddlbaer]]></dc:creator><pubDate>Sat, 23 Sep 2006 18:59:33 GMT</pubDate></item></channel></rss>