C语言指针编程

Python019

C语言指针编程,第1张

#include <stdio.h>

int max(int a, int b)

{

    return a>b?a:b

}

int min(int a, int b)

{

    return a<b?a:b

}

int main()

{

    int a,b,i

    int (*p[2])(int,int) = {max,min}

    scanf("%d%d",&a,&b)

    scanf("%d",&i)

    if(i == 1 || i == 2)

        printf("%d\n", p[i-1](a,b))

    return 0

}

#include<stdio.h>

#define N 5

#define M 5

void f(int a[][M],int n,int m,int *s) { int i,j

  for ( i=0i<ni++,s++ ) {

    *s=a[i][0] for ( j=1j<mj++ ) if ( *s<a[i][j] ) *s=a[i][j]

  }

}

void main() { int a[N][M],s[N],i,j

  for ( i=0i<Ni++ ) for ( j=0j<Mj++ ) scanf("%d",&a[i][j])

  f(a,N,M,s)

  for ( i=0i<Ni++ ) printf("%d\n",s[i])

}

写法一、(交换指针指向的地址中存放的数据):

#include&ltiostream&gt

usingnamespacestd

intmain()

{

inta,b,c

int*p1,*p2,*p3

inttemp

cout&lt&lt"输入3个整数:"&lt&ltendl

cin&gt&gta&gt&gtb&gt&gtc

p1=&a

p2=&b

p3=&c

if(*p1&gt*p2)

{

temp=*p1

*p1=*p2

*p2=temp

}

if(*p1&gt*p3)

{

temp=*p1

*p1=*p3

*p3=temp

}

if(*p2&gt*p3)

{

temp=*p2

*p2=*p3

*p3=temp

}

cout&lt&lt'\n'

&lt&lt"按由小到大顺序输出:"&lt&lt'\n'

&lt&lta&lt&lt'\n'

&lt&ltb&lt&lt'\n'

&lt&ltc&lt&lt'\n'

return0

}

写法二、(交换指针指向的地址):

#include&ltiostream&gt

usingnamespacestd

intmain()

{

inta,b,c

int*p1,*p2,*p3

int*temp

cout&lt&lt"输入3个整数:"&lt&ltendl

cin&gt&gta&gt&gtb&gt&gtc

p1=&a

p2=&b

p3=&c

if(*p1&gt*p2)

{

temp=p1

p1=p2

p2=temp

}

if(*p1&gt*p3)

{

temp=p1

p1=p3

p3=temp

}

if(*p2&gt*p3)

{

temp=p2

p2=p3

p3=temp

}

cout&lt&lt'\n'

&lt&lt"按由小到大顺序输出:"&lt&lt'\n'

&lt&lt*p1&lt&lt'\n'

&lt&lt*p2&lt&lt'\n'

&lt&lt*p3&lt&lt'\n'

return0

}

写法三、用函数指针

#include&ltstdio.h&gt

#include&ltstdlib.h&gt

intmain()

{

inta,b,c,*p1,*p2,*p3

printf("请输入三个整数:")

scanf("%d%d%d",&a,&b,&c)

p1=&a

p2=&b

p3=&c

exchange(p1,p2,p3)

printf("%d%d%d",a,b,c)

return0

}

voidswap(int*x,int*y)

{

inttemp

if(*x&gt*y)

{

temp=*x

*x=*y

*y=temp

}

}

voidexchange(p1,p2,p3)

{

swap(p1,p2)

swap(p1,p3)

swap(p2,p3)

}