<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://monobook.org/w/index.php?action=history&amp;feed=atom&amp;title=%E9%96%A2%E6%95%B0%E3%83%9D%E3%82%A4%E3%83%B3%E3%82%BF</id>
	<title>関数ポインタ - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://monobook.org/w/index.php?action=history&amp;feed=atom&amp;title=%E9%96%A2%E6%95%B0%E3%83%9D%E3%82%A4%E3%83%B3%E3%82%BF"/>
	<link rel="alternate" type="text/html" href="https://monobook.org/w/index.php?title=%E9%96%A2%E6%95%B0%E3%83%9D%E3%82%A4%E3%83%B3%E3%82%BF&amp;action=history"/>
	<updated>2026-06-04T15:51:46Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://monobook.org/w/index.php?title=%E9%96%A2%E6%95%B0%E3%83%9D%E3%82%A4%E3%83%B3%E3%82%BF&amp;diff=3204&amp;oldid=prev</id>
		<title>124.45.150.27: /* C# */</title>
		<link rel="alternate" type="text/html" href="https://monobook.org/w/index.php?title=%E9%96%A2%E6%95%B0%E3%83%9D%E3%82%A4%E3%83%B3%E3%82%BF&amp;diff=3204&amp;oldid=prev"/>
		<updated>2013-04-11T04:45:10Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;C#&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ja&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 古い版&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2013年4月11日 (木) 04:45時点における版&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l64&quot;&gt;64行目:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;64行目:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== C# ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== C# ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[C&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;#&lt;/del&gt;|C &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Sharp&lt;/del&gt;]]は見た目こそ[[C言語]]似だが、その実態は[[Turbo Pascal]]の方言であるため、基本は[[Turbo Pascal]]に右に倣えである。&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[C &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Sharp&lt;/ins&gt;|C&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;#&lt;/ins&gt;]]は見た目こそ[[C言語]]似だが、その実態は[[Turbo Pascal]]の方言であるため、基本は[[Turbo Pascal]]に右に倣えである。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;C#では関数ポインタは[[オブジェクト指向プログラミング言語]]として、同一[[インスタンス]]内の[[フィールド変数]]や[[プロパティ]]を[[参照]]できるなど、若干の改良が加えられており、その名称も「[[デリゲート]]」と改名されている。名称と微妙な機能の差はあるが基本は同じである。&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[C Sharp|&lt;/ins&gt;C#&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]]&lt;/ins&gt;では関数ポインタは[[オブジェクト指向プログラミング言語]]として、同一[[インスタンス]]内の[[フィールド変数]]や[[プロパティ]]を[[参照]]できるなど、若干の改良が加えられており、その名称も「[[デリゲート]]」と改名されている。名称と微妙な機能の差はあるが基本は同じである。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;using System;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;using System;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>124.45.150.27</name></author>
	</entry>
	<entry>
		<id>https://monobook.org/w/index.php?title=%E9%96%A2%E6%95%B0%E3%83%9D%E3%82%A4%E3%83%B3%E3%82%BF&amp;diff=3203&amp;oldid=prev</id>
		<title>124.45.150.27: ページの作成：「&#039;&#039;&#039;関数ポインター&#039;&#039;&#039;とは、関数のポインターである。  == 英語読みについて == 日本語でいう「関数」は[[プログラミ...」</title>
		<link rel="alternate" type="text/html" href="https://monobook.org/w/index.php?title=%E9%96%A2%E6%95%B0%E3%83%9D%E3%82%A4%E3%83%B3%E3%82%BF&amp;diff=3203&amp;oldid=prev"/>
		<updated>2013-04-11T04:29:03Z</updated>

		<summary type="html">&lt;p&gt;ページの作成：「&amp;#039;&amp;#039;&amp;#039;関数ポインター&amp;#039;&amp;#039;&amp;#039;とは、&lt;a href=&quot;/wiki/%E9%96%A2%E6%95%B0&quot; title=&quot;関数&quot;&gt;関数&lt;/a&gt;の&lt;a href=&quot;/wiki/%E3%83%9D%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC&quot; class=&quot;mw-redirect&quot; title=&quot;ポインター&quot;&gt;ポインター&lt;/a&gt;である。  == 英語読みについて == 日本語でいう「&lt;a href=&quot;/wiki/%E9%96%A2%E6%95%B0&quot; title=&quot;関数&quot;&gt;関数&lt;/a&gt;」は[[プログラミ...」&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;関数ポインター&amp;#039;&amp;#039;&amp;#039;とは、[[関数]]の[[ポインター]]である。&lt;br /&gt;
&lt;br /&gt;
== 英語読みについて ==&lt;br /&gt;
日本語でいう「[[関数]]」は[[プログラミング言語]]によって「ファンクション（function）」だったり「メソッド（method）」だったりと曖昧なので、英語での呼び方も「function pointers」だったり「method pointers」だったり「functors」だったりと様々である。よって名称・呼称の細かい違いは気にしてはならない。時間の無駄である。&lt;br /&gt;
&lt;br /&gt;
== 概要 ==&lt;br /&gt;
関数ポインタは[[関数]]を[[変数]]のように扱えてうれしいという物である。&lt;br /&gt;
&lt;br /&gt;
主に絶望的なほど巨大な分岐処理を、関数ポインタの[[LUT]]に置き換えてることで[[ソースコード]]を単純化するなどという場面で使われる。[[ゲーム]]などではよく多用される技法である。&lt;br /&gt;
&lt;br /&gt;
また、[[コールバック関数]]と呼ばれる使われ方もある。たとえば[[Windows]]などのいわゆる[[イベントドリブン]]な[[実装]]では、何かしらの[[イベント]]発生時に関数ポインタ変数が[[NULL]]ではなかったら[[関数]]（[[コールバック関数]]）を実行する、などという使われ方をしている。&lt;br /&gt;
&lt;br /&gt;
== 記述例 ==&lt;br /&gt;
=== C言語 ===&lt;br /&gt;
[[C言語]]系の[[プログラミング言語]]では[[実引数]]の[[型]]が一致していなくても怒られないことが多い。そのため、その扱いには注意を要し、一歩間違えれば[[バグ]]の温床となる。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
static int func(int a)&lt;br /&gt;
{&lt;br /&gt;
    printf(&amp;quot;func: %d\n&amp;quot;, a);&lt;br /&gt;
    return 2 * a + 3;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
    int (*f1)(int a) = func;&lt;br /&gt;
    int result = (*f1)(10);&lt;br /&gt;
&lt;br /&gt;
    printf(&amp;quot;main: %d\n&amp;quot;, result);&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pascal ===&lt;br /&gt;
元祖[[Pascal]]にはそもそも[[ポインタ]]自体がない。よって関数ポインタもない。&lt;br /&gt;
&lt;br /&gt;
=== Turbo Pascal ===&lt;br /&gt;
[[Turbo Pascal]]にはPointer型という名の[[ポインタ]]が追加されている。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
program Test;&lt;br /&gt;
&lt;br /&gt;
uses&lt;br /&gt;
  Classes;&lt;br /&gt;
&lt;br /&gt;
type&lt;br /&gt;
  TFuncPointer = function(a : Integer):Integer;&lt;br /&gt;
&lt;br /&gt;
function Func(a : Integer):Integer;&lt;br /&gt;
begin&lt;br /&gt;
  WriteLn(&amp;#039;Func: &amp;#039;, a);&lt;br /&gt;
  Func := 2 * a + 3;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
var&lt;br /&gt;
  ptr : Pointer;&lt;br /&gt;
  ret : Integer;&lt;br /&gt;
begin&lt;br /&gt;
  ptr := @Func;&lt;br /&gt;
  ret := TFuncPointer(ptr)(10);&lt;br /&gt;
  WriteLn(&amp;#039;Main: &amp;#039;, ret);&lt;br /&gt;
end.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== C# ===&lt;br /&gt;
[[C#|C Sharp]]は見た目こそ[[C言語]]似だが、その実態は[[Turbo Pascal]]の方言であるため、基本は[[Turbo Pascal]]に右に倣えである。&lt;br /&gt;
&lt;br /&gt;
C#では関数ポインタは[[オブジェクト指向プログラミング言語]]として、同一[[インスタンス]]内の[[フィールド変数]]や[[プロパティ]]を[[参照]]できるなど、若干の改良が加えられており、その名称も「[[デリゲート]]」と改名されている。名称と微妙な機能の差はあるが基本は同じである。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
&lt;br /&gt;
class App&lt;br /&gt;
{&lt;br /&gt;
    delegate int FuncDelegate(int a);&lt;br /&gt;
&lt;br /&gt;
    static int Func(int a)&lt;br /&gt;
    {&lt;br /&gt;
        Console.WriteLine(&amp;quot;func: {0}&amp;quot;, a);&lt;br /&gt;
        return 2 * a + 3;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    static void Main()&lt;br /&gt;
    {&lt;br /&gt;
        var f1 = new FuncDelegate(Func);&lt;br /&gt;
        int result = f1(10);&lt;br /&gt;
&lt;br /&gt;
        Console.WriteLine(&amp;quot;main: {0}&amp;quot;, result);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 関連項目 ==&lt;br /&gt;
* [[第一級関数]]&lt;br /&gt;
* [[高階関数]]&lt;br /&gt;
* [[クロージャー]]&lt;br /&gt;
* [[ラムダ式]]&lt;br /&gt;
&lt;br /&gt;
== 参考文献 ==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;/div&gt;</summary>
		<author><name>124.45.150.27</name></author>
	</entry>
</feed>