A<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.cppe.ru/index.php?action=history&amp;feed=atom&amp;title=C%2FFunction%2FFunction_Pointer</id>
		<title>C/Function/Function Pointer - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.cppe.ru/index.php?action=history&amp;feed=atom&amp;title=C%2FFunction%2FFunction_Pointer"/>
		<link rel="alternate" type="text/html" href="http://www.cppe.ru/index.php?title=C/Function/Function_Pointer&amp;action=history"/>
		<updated>2026-04-18T00:04:49Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.cppe.ru/index.php?title=C/Function/Function_Pointer&amp;diff=294&amp;oldid=prev</id>
		<title> в 14:20, 25 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.cppe.ru/index.php?title=C/Function/Function_Pointer&amp;diff=294&amp;oldid=prev"/>
				<updated>2010-05-25T14:20:56Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 14:20, 25 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://www.cppe.ru/index.php?title=C/Function/Function_Pointer&amp;diff=295&amp;oldid=prev</id>
		<title>Admin: 1 версия:&amp;#32;Импорт контента...</title>
		<link rel="alternate" type="text/html" href="http://www.cppe.ru/index.php?title=C/Function/Function_Pointer&amp;diff=295&amp;oldid=prev"/>
				<updated>2010-05-25T10:22:32Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия: Импорт контента...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Array of function pointer==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
int sum(int a, int b);&lt;br /&gt;
int subtract(int a, int b);&lt;br /&gt;
int mul(int a, int b);&lt;br /&gt;
int div(int a, int b);&lt;br /&gt;
int (*p[4]) (int x, int y);&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
  int result;&lt;br /&gt;
  int i, j, op;&lt;br /&gt;
  p[0] = sum; /* address of sum() */&lt;br /&gt;
  p[1] = subtract; /* address of subtract() */&lt;br /&gt;
  p[2] = mul; /* address of mul() */&lt;br /&gt;
  p[3] = div; /* address of div() */&lt;br /&gt;
  printf(&amp;quot;Enter two numbers: &amp;quot;);&lt;br /&gt;
  scanf(&amp;quot;%d %d&amp;quot;, &amp;amp;i, &amp;amp;j);&lt;br /&gt;
  &lt;br /&gt;
  printf(&amp;quot;0: Add, 1: Subtract, 2: Multiply, 3: Divide\n&amp;quot;);&lt;br /&gt;
  do {&lt;br /&gt;
    printf(&amp;quot;Enter number of operation: &amp;quot;);&lt;br /&gt;
    scanf(&amp;quot;%d&amp;quot;, &amp;amp;op);&lt;br /&gt;
  } while(op&amp;lt;0 || op&amp;gt;3);&lt;br /&gt;
  result = (*p[op]) (i, j);&lt;br /&gt;
  printf(&amp;quot;%d&amp;quot;, result);&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
int sum(int a, int b)&lt;br /&gt;
{&lt;br /&gt;
  return a + b;&lt;br /&gt;
}&lt;br /&gt;
int subtract(int a, int b)&lt;br /&gt;
{&lt;br /&gt;
  return a - b;&lt;br /&gt;
}&lt;br /&gt;
int mul(int a, int b)&lt;br /&gt;
{&lt;br /&gt;
  return a * b;&lt;br /&gt;
}&lt;br /&gt;
int div(int a, int b)&lt;br /&gt;
{&lt;br /&gt;
  if(b) &lt;br /&gt;
      return a / b;&lt;br /&gt;
  else &lt;br /&gt;
      return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Arrays of Pointers to functions==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
int sum(int, int);&lt;br /&gt;
int product(int, int);&lt;br /&gt;
int subtract(int, int);&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
   int i = 0;&lt;br /&gt;
   int a = 10;&lt;br /&gt;
   int b = 5;&lt;br /&gt;
   int result = 0;&lt;br /&gt;
   int (*pfun[3])(int, int);&lt;br /&gt;
   pfun[0] = sum;&lt;br /&gt;
   pfun[1] = product;&lt;br /&gt;
   pfun[2] = subtract;&lt;br /&gt;
   for( i = 0 ; i &amp;lt; 3 ; i++)&lt;br /&gt;
   {&lt;br /&gt;
     result = pfun[i](a, b);&lt;br /&gt;
     printf(&amp;quot;\nresult = %d&amp;quot;, result);&lt;br /&gt;
   }&lt;br /&gt;
   result = pfun[1](pfun[0](a, b), pfun[2](a, b));&lt;br /&gt;
   printf(&amp;quot;\n\nThe product of the sum and the subtract = %d\n&amp;quot;,result);&lt;br /&gt;
}&lt;br /&gt;
int sum(int x, int y)&lt;br /&gt;
{&lt;br /&gt;
   return x + y;&lt;br /&gt;
}&lt;br /&gt;
int product(int x, int y)&lt;br /&gt;
{&lt;br /&gt;
   return x * y;&lt;br /&gt;
}&lt;br /&gt;
int subtract(int x, int y)&lt;br /&gt;
{&lt;br /&gt;
   return x - y;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Function pointer==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;string.h&amp;gt;&lt;br /&gt;
void check(char *a, char *b,int (*cmp)(const char *, const char *));&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
  char s1[80]= &amp;quot;asdf&amp;quot;, s2[80]=&amp;quot;asdf&amp;quot;;&lt;br /&gt;
  int (*p)(const char *, const char *);&lt;br /&gt;
  p = strcmp;&lt;br /&gt;
&lt;br /&gt;
  check(s1, s2, p);&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
void check(char *a, char *b,int (*cmp)(const char *, const char *))&lt;br /&gt;
{&lt;br /&gt;
  printf(&amp;quot;Testing for equality.\n&amp;quot;);&lt;br /&gt;
  if(!(*cmp)(a, b)) {&lt;br /&gt;
     printf(&amp;quot;Equal&amp;quot;);&lt;br /&gt;
  }else {&lt;br /&gt;
     printf(&amp;quot;Not Equal&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Function pointer 2==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ctype.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;string.h&amp;gt;&lt;br /&gt;
int compvalues(const char *a, const char *b);&lt;br /&gt;
void check(char *a, char *b,int (*cmp)(const char *, const char *));&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
  char s1[80]=&amp;quot;123&amp;quot;, s2[80]=&amp;quot;123&amp;quot;;&lt;br /&gt;
  printf(&amp;quot;Testing values for equality.\n&amp;quot;);&lt;br /&gt;
  check(s1, s2, compvalues);&lt;br /&gt;
&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
void check(char *a, char *b,int (*cmp)(const char *, const char *))&lt;br /&gt;
{&lt;br /&gt;
  if(!(*cmp)(a, b))&lt;br /&gt;
     printf(&amp;quot;Equal&amp;quot;);&lt;br /&gt;
  else&lt;br /&gt;
     printf(&amp;quot;Not Equal&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
int compvalues(const char *a, const char *b)&lt;br /&gt;
{&lt;br /&gt;
  if(atoi(a)==atoi(b))&lt;br /&gt;
     return 0;&lt;br /&gt;
  else&lt;br /&gt;
     return 1;&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Function pointer and use it call a function==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
int sum(int a, int b);&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
  int (*p) (int x, int y);&lt;br /&gt;
  int result;&lt;br /&gt;
  p = sum; /* get address of sum() */&lt;br /&gt;
  result = (*p) (10, 20);&lt;br /&gt;
  printf(&amp;quot;%d&amp;quot;, result);&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
int sum(int a, int b)&lt;br /&gt;
{&lt;br /&gt;
  return a+b;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Function pointer: function call==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
int *f(int x);&lt;br /&gt;
int count;&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
  int *p;&lt;br /&gt;
  p = f(110); /* return pointer */&lt;br /&gt;
  printf(&amp;quot;count (through p) is %d&amp;quot;, *p);&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
int *f(int x)&lt;br /&gt;
{&lt;br /&gt;
  count = x;&lt;br /&gt;
  return &amp;amp;count; /* return a pointer */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Implementing arithmetic and array functions==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
double add(double a, double b)&lt;br /&gt;
{&lt;br /&gt;
  return a+b;&lt;br /&gt;
}&lt;br /&gt;
double subtract(double a, double b)&lt;br /&gt;
{&lt;br /&gt;
  return a-b;&lt;br /&gt;
}&lt;br /&gt;
double multiply(double a, double b)&lt;br /&gt;
{&lt;br /&gt;
  return a*b;&lt;br /&gt;
}&lt;br /&gt;
double array_op(double array[], int size, double (*pfun)(double,double))&lt;br /&gt;
{&lt;br /&gt;
  double result = array[size-1];&lt;br /&gt;
  int i = 0;&lt;br /&gt;
  for(i = size-1 ; i&amp;gt;0 ; i--)&lt;br /&gt;
    result = pfun(array[i-1], result);&lt;br /&gt;
  return result;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  double array[] = {11.0, 10.0, 9.0, 8.0, 7.0, 6.0, 5.0, 4.0, 3.0, 2.0, 1.0};&lt;br /&gt;
  int i = 0;&lt;br /&gt;
  int length = sizeof array/sizeof(double);&lt;br /&gt;
  printf(&amp;quot;The value of:\n&amp;quot;);&lt;br /&gt;
  for(i = 0 ; i&amp;lt; length ; i++)&lt;br /&gt;
  {&lt;br /&gt;
    printf(&amp;quot;%.2f%s\n&amp;quot;, array[i]);&lt;br /&gt;
  }&lt;br /&gt;
  printf(&amp;quot; is %.2lf\n&amp;quot;, array_op(array,length,add));&lt;br /&gt;
  printf(&amp;quot;\nThe value of:\n&amp;quot;);&lt;br /&gt;
  for(i = 0 ; i&amp;lt; length ; i++)&lt;br /&gt;
  {&lt;br /&gt;
    printf(&amp;quot;%.2lf%s\n&amp;quot;, array[i]);&lt;br /&gt;
  }&lt;br /&gt;
  printf(&amp;quot; is %.2lf\n&amp;quot;, array_op(array, length, subtract));&lt;br /&gt;
  printf(&amp;quot;\nThe value of:\n&amp;quot;);&lt;br /&gt;
  for(i = 0 ; i&amp;lt; length ; i++)&lt;br /&gt;
  {&lt;br /&gt;
    printf(&amp;quot;%.2lf%s\n&amp;quot;, array[i]);&lt;br /&gt;
  }&lt;br /&gt;
  printf(&amp;quot; is %.2lf\n&amp;quot;, array_op(array, length, multiply));&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Initialize the function pointer array==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
int sum(int a, int b);&lt;br /&gt;
int subtract(int a, int b);&lt;br /&gt;
int mul(int a, int b);&lt;br /&gt;
int div(int a, int b);&lt;br /&gt;
/* initialize the pointer array */&lt;br /&gt;
int (*p[4]) (int x, int y) = {&lt;br /&gt;
  sum, subtract, mul, div&lt;br /&gt;
} ;&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
  int result;&lt;br /&gt;
  int i = 2, j = 2, op;&lt;br /&gt;
  &lt;br /&gt;
  printf(&amp;quot;0: Add, 1: Subtract, 2: Multiply, 3: Divide\n&amp;quot;);&lt;br /&gt;
  do {&lt;br /&gt;
    printf(&amp;quot;Enter number of operation: &amp;quot;);&lt;br /&gt;
    scanf(&amp;quot;%d&amp;quot;, &amp;amp;op);&lt;br /&gt;
  } while(op&amp;lt;0 || op&amp;gt;3);&lt;br /&gt;
  result = (*p[op]) (i, j);&lt;br /&gt;
  printf(&amp;quot;%d&amp;quot;, result);&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
int sum(int a, int b)&lt;br /&gt;
{&lt;br /&gt;
  return a + b;&lt;br /&gt;
}&lt;br /&gt;
int subtract(int a, int b)&lt;br /&gt;
{&lt;br /&gt;
  return a - b;&lt;br /&gt;
}&lt;br /&gt;
int mul(int a, int b)&lt;br /&gt;
{&lt;br /&gt;
  return a * b;&lt;br /&gt;
}&lt;br /&gt;
int div(int a, int b)&lt;br /&gt;
{&lt;br /&gt;
  if(b) &lt;br /&gt;
      return a / b;&lt;br /&gt;
  else &lt;br /&gt;
      return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Passing a Pointer to a function==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
int sum(int,int);&lt;br /&gt;
int product(int,int);&lt;br /&gt;
int difference(int,int);&lt;br /&gt;
int any_function(int(*pfun)(int, int), int x, int y);&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
   int a = 13;&lt;br /&gt;
   int b = 51;&lt;br /&gt;
   int result = 0;&lt;br /&gt;
   int (*pf)(int, int) = sum;&lt;br /&gt;
   result = any_function(pf, a, b);&lt;br /&gt;
   printf(&amp;quot;\nresult = %d&amp;quot;, result );&lt;br /&gt;
   result = any_function(product,a, b);&lt;br /&gt;
   printf(&amp;quot;\nresult = %d&amp;quot;, result );&lt;br /&gt;
   printf(&amp;quot;\nresult = %d\n&amp;quot;, any_function(difference, a, b));&lt;br /&gt;
}&lt;br /&gt;
int any_function(int(*pfun)(int, int), int x, int y){&lt;br /&gt;
   return pfun(x, y);&lt;br /&gt;
}&lt;br /&gt;
int sum(int x, int y){&lt;br /&gt;
   return x + y;&lt;br /&gt;
}&lt;br /&gt;
int product(int x, int y){&lt;br /&gt;
   return x * y;&lt;br /&gt;
}&lt;br /&gt;
int difference(int x, int y){&lt;br /&gt;
   return x - y;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Pointing to functions==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
int sum(int x, int y)&lt;br /&gt;
{&lt;br /&gt;
   return x + y;&lt;br /&gt;
}&lt;br /&gt;
int product(int x, int y)&lt;br /&gt;
{&lt;br /&gt;
   return x * y;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
   int a = 13;&lt;br /&gt;
   int b = 5;&lt;br /&gt;
   int result = 0;&lt;br /&gt;
   int (*pfun)(int, int);&lt;br /&gt;
   pfun = sum;&lt;br /&gt;
   result = pfun(a, b);&lt;br /&gt;
   printf(&amp;quot;\npfun = sum   result = %d&amp;quot;, result);&lt;br /&gt;
   pfun = product;&lt;br /&gt;
   result = pfun(a, b);&lt;br /&gt;
   printf(&amp;quot;\npfun = product         result = %d&amp;quot;, result);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>