1

2
C:

3
,int i;
float k;
-----
…...
…...
2000
2001
2002
2005
0
2003
i
k
8.1

4
…...
…...
2000
2004
2006
2005
i
10
i_pointer
2001
2002
2003
~
2000
()

5
,
,2
:
:
,2
,…...
…...
2000
2004
2006
2005
i
10
i_pointer
2001
2002
2003
2000
i_pointer
*i_pointer
&i_pointer
2000 10
i_pointer *i_pointer
&i_pointer
i
i_pointer &i &(*i_pointer)
i *i_pointer *(&i)
i_pointer = &i = &(*i_pointer)
i = *i_pointer = *(&i)
&*

6
i=3;
…...
…...
2000
2004
2006
2005
i
10
i_pointer
2001
2002
2003
2000
3
*i_pointer=20;
20

7
…...
…...
2000
2004
2006
2005
i
10
i_pointer
2001
2002
2003
2000
k
k=i;
k=*i_pointer;
10

8
[] *
3
i
2000
i_pointer
*i_pointer
i *i_pointer
&i i_pointer
i=3; *i_pointer=3
*
int *p1,*p2;
float *q ;
static char *name;
1 int *p1,*p2; int *p1,p2;
2 p1,p2,*p1,*p2
3
4
8.2

9
[] *=
int i;
int *p=&i;
int *p=&i;
int i;
int i;
int *p=&i;
int *q=p;
main( )
{ int i;
static int *p=&i;
..............
} (?)

10
main( )
{ int i=10;
int *p;
*p=i;
printf(“%d”,*p);
}
main( )
{ int i=10,k;
int *p;
p=&k;
*p=i;
printf(“%d”,*p);
}
…...
…...
2000
2004
2006
2005
i
10
p
2001
2002
2003

11
()
:
int * p=0;
#define NULL 0
int *p=NULL:
p=NULL p
,
int *p;
......
while(p!=NULL)
{,..…
}
void *
,void *p;
char *p1;
void *p2;
p1=(char *)p2;
p2=(void *)p1;

12
main()
{ int *p1,*p2,*p,a,b;
scanf("%d,%d",&a,&b);
p1=&a; p2=&b;
if(a<b)
{ p=p1; p1=p2; p2=p;}
printf("a=%d,b=%d\n",a,b);
printf("max=%d,min=%d\n",*p1,*p2);
}
a=5,b=9
max=9,min=5
…...
…...
p1
p
2000
2008
2002
2004
2006
p2
b
a5
2006
9
2008
2006
2008
2006

13
,“
swap(int x,int y)
{ int temp;
temp=x;
x=y;
y=temp;
}
main()
{ int a,b;
scanf("%d,%d",&a,&b);
if(a<b) swap(a,b);
printf("\n%d,%d\n",a,b);
}
…...
…...
2000
2008
200A
2002
2004
2006
5 ab
(main)
9
temp
y
x(swap)
5
5
95
9
COPY
——

14
,“
swap(int x,int y)
{ int temp;
temp=x;
x=y;
y=temp;
}
main()
{ int a,b;
scanf("%d,%d",&a,&b);
if(a<b) swap(a,b);
printf("\n%d,%d\n",a,b);
}
…...
…...
2000
2008
200A
2002
2004
2006
5 ab
(main)
9
5,9
——

15
swap(int *p1,int *p2)
{ int p;
p=*p1;
*p1=*p2;
*p2=p;
}
main()
{ int a,b;
int *pointer_1,*pointer_2;
scanf("%d,%d",&a,&b);
pointer_1=&a; pointer_2=&b;
if(a<b)swap(pointer_1,pointer_2);
printf("\n%d,%d\n",a,b);
}
…...
2000
2008
200A
2002
2004
2006
200C
200E
2010,..
5
9
a
b
(main)
pointer_1
pointer_220002002
(swap) p1
p2
p
5
9
2000
2002
COPY
5

16
swap(int *p1,int *p2)
{ int p;
p=*p1;
*p1=*p2;
*p2=p;
}
main()
{ int a,b;
int *pointer_1,*pointer_2;
scanf("%d,%d",&a,&b);
pointer_1=&a; pointer_2=&b;
if(a<b)swap(pointer_1,pointer_2);
printf("\n%d,%d\n",a,b);
}
…...
2000
2008
200A
2002
2004
2006
200C
200E
2010,..
5
9
a
b
(main)
pointer_1
pointer_220002002
5
9
95

17
swap(int *p1,int *p2)
{ int *p;
*p=*p1;
*p1=*p2;
*p2=*p;
}
main()
{ int a,b;
int *pointer_1,*pointer_2;
scanf("%d,%d",&a,&b);
pointer_1=&a; pointer_2=&b;
if(a<b) swap(pointer_1,pointer_2);
printf("\n%d,%d\n",a,b);
}
99
int x;
int *p=&x;x;
…...
2000
2008
200A
2002
2004
2006
200C
200E
2010,..
5
9
a
b
(main)
pointer_1
pointer_220002002
9
9
2000
2002
COPY (swap) p1
p2
p****
2000
2

18
/*ch9_32.c*/
swap(int x,int y)
{ int t;
t=x; x=y; y=t;
}
main()
{ int a,b;
int *pointer_1,*pointer_2;
scanf("%d,%d",&a,&b);
pointer_1=&a; pointer_2=&b;
if(a<b) swap(*pointer_1,*pointer_2);
printf("\n%d,%d\n",a,b);
}
59
…...
2000
2008
200A
2002
2004
2006
200C
200E
2010,..
5
9
a
b
(main)
pointer_1
pointer_220002002
9
COPY (swap) x
b
t55
59

19
59
swap(int *p1,int *p2)
{ int *p;
p=p1;
p1=p2;
p2=p;
}
main()
{ int a,b;
int *pointer_1,*pointer_2;
scanf("%d,%d",&a,&b);
pointer_1=&a; pointer_2=&b;
if(a<b) swap(pointer_1,pointer_2);
printf("%d,%d",*pointer_1,*pointer_2);
}
…...
2000
2008
200A
2002
2004
2006
200C
200E
2010,..
5
9
a
b
(main)
pointer_1
pointer_220002002
2000
2002
COPY (swap)
p1
p2
p****20002000
2002

20
int array[10];
int *p;
p=&array[0]; //? p=array;
int *p=&array[0];
int *p=array;
array[0]
array[1]
array[2]
array[3]
array[9]
...
p &array[0]
p8.3

21
p=&a; (a?p)
p=array; ( array?p)
p=&array[i]; (?p)
p1=p2; (p2?p1)
p,p?
int i,*p;
p=1000; (?)
i=p; (?)

22
p?i? p?i?d (idp)
p++,p--,p+i,p-i,p+=i,p-=i
p1p2p1-p2=?(p1-p2)/d
p1+p2
pfloat p+1? p+1?4
pintp=&a[0];
p+1 a[1]
int a[10];
int *p=&a[2];
p++;
*p=1;
int a[10];
int *p1=&a[2];
int *p2=&a[5];
p2-p1=3;
a[0]
a[1]
a[2]
a[3]
a[4]
a[5]
a[6]
a[7]
a[8]
a[9]
ap
p+1,a+1
p+i,a+i
p+9,a+9
1

23
p1p2
p1<p2 p1
p1>p2 p1
p1==p2 p1p2
p1p2
p==NULL p!=NULL

24
a[0]
a[1]
a[2]
a[3]
a[9]
...
a
a+9
a+1
a+2
a[0]
a[1]
a[2]
a[9]
a[0]
a[1]
a[2]
a[3]
a[9]
...
p
p+9
p+1
p+2
*p
*(p+1)
*(p+2)
*(p+9)
[]
a[i]? *(a+i)
a[i]? p[i]? *(p+i)?*(a+i)
*a
*(a+1)
*(a+2)
*(a+9)
p[0]
p[1]
p[2]
p[9]

25
a[0]
a[1]
a[2]
a[3]
a[4]
main()
{ int a[5],*pa,i;
for(i=0;i<5;i++)
a[i]=i+1;
pa=a;
for(i=0;i<5;i++)
printf("*(pa+%d):%d\n",i,*(pa+i));
for(i=0;i<5;i++)
printf("*(a+%d):%d\n",i,*(a+i));
for(i=0;i<5;i++)
printf("pa[%d]:%d\n",i,pa[i]);
for(i=0;i<5;i++)
printf("a[%d]:%d\n",i,a[i]);
}
1
2
3
4
5
pa

26
int a[]={1,2,3,4,5,6,7,8,9,10},*p=a,i;
A&(a+1) Ba++ C&p D&p[i]?
p++,p-- (?)
a++,a-- (?)
a+1,*(a+2) (?)

27
void main()
{ int a []={5,8,7,6,2,7,3};
int y,*p=&a[1];
y=(*--p)++;
printf(“%d,,y);
printf(“%d”,a[0]);
}
5 6
p
p 5
8
7
6
2
7
3
0
1
2
3
4
5
6
a
6

28
main()
{ int i,*p,a[7];
p=a;
for(i=0;i<7;i++)
scanf("%d",p++);
printf("\n");
for(i=0;i<7;i++,p++)
printf("%d",*p);
}
p=a;
p
p 5
8
7
6
2
7
3
0
1
2
3
4
5
6
a
p
p
p
p
p
p

29

30
i j
3 7 9 11 0 6 7 5 4 2
0 1 2 3 4 5 6 7 8 9
i ji ji jji
117 6 05 94 72 3
void inv(int x[],int n)
{ int t,i,j,m=(n-1)/2;
for(i=0;i<=m;i++)
{ j=n-1-i;
t=x[i]; x[i]=x[j]; x[j]=t;
}
}
main()
{ int i,a[10]={3,7,9,11,0,6,7,5,4,2};
inv(a,10);
printf("The array has been reverted:\n");
for(i=0;i<10;i++)
printf("%d,",a[i]);
printf("\n");
}
m=4
an1

31
void inv(int *x,int n)
{ int t,*p,*i,*j,m=(n-1)/2;
i=x; j=x+n-1; p=x+m;
for(;i<=p;i++,j--)
{ t=*i; *i=*j; *j=t; }
}
main()
{ int i,a[10]={3,7,9,11,0,6,7,5,4,2};
inv(a,10);
printf("The array has been reverted:\n");
for(i=0;i<10;i++)
printf("%d,",a[i]);
printf("\n");
}
,
3
7
9
11
0
6
7
5
4
2
a[0]
a[1]
a[2]
a[3]
a[4]
a[5]
a[6]
a[7]
a[8]
a[9]
x
p=x+m
a
6
0
7
11
5
9
4
7
2
3
i
j
i
j
i
j
ji
j
i
an2

32
void inv(int *x,int n)
{ int t,*i,*j,*p,m=(n-1)/2;
i=x; j=x+n-1; p=x+m;
for(;i<=p;i++,j--)
{ t=*i; *i=*j; *j=t; }
}
main()
{ int i,a[10],*p=a;
for(i=0;i<10;i++,p++)
scanf("%d",p);
p=a; inv(p,10);
printf("The array has been reverted:\n");
for(p=a;p<a+10;p++)
printf("%d",*p);
}
an3

33
void inv(int x[],int n)
{ int t,i,j,m=(n-1)/2;
for(i=0;i<=m;i++)
{ j=n-1-i;
t=x[i]; x[i]=x[j]; x[j]=t;
}
}
main()
{ int i,a[10],*p=a;
for(i=0;i<10;i++,p++)
scanf("%d",p);
p=a; inv(p,10);
printf("The array has been reverted:\n");
for(p=arr;p<arr+10;p++)
printf("%d ",*p);
}
,
an4

34
int *p int q[10]
p=q; p+i q[i]
,p=q,p[i]? q[i]? *(p+i)? *(q+i)
int q[ ]? int *q
int *p int p[];
p(2q2*10

35
:
1arrayarray[0]
2array
3array+iarray[i]
4array[i]? *(array+i)
array int array[10];

36
1a
a[0],a[1],a[2]
2a[i]
4
a
a+1
a+2
*(*(a+0)+1)
*(a[0]+1)int a[3][4];
a[0]
a[1]
a[2]
2000
2008
2016
2000
2002
2008
2010
2016
2018
a[0][0]
a[0][1]
a[1][0]
a[1][1]
a[2][0]
a[2][1]
a[0][2]
a[0][3]
a[1][2]
a[1][3]
a[2][2]
a[2][3]
a[0]+1
a[1]+1
a[2]+1
*(a+0)+1
*(a+1)+1
*(a+2)+1
1

37
int a[3][4],
a-----0
a+i-----i
a[i]? *(a+i)------i0
a[i]+j? *(a+i)+j -----ij
*(a[i]+j)? *(*(a+i)+j)? a[i][j]
a+i=&a[i]=a[i]=*(a+i)
=&a[i][0],
a+i? &a[i],i
a[i]? *(a+i)? &a[i][0]i0
int a[3][4];
a[0]
a[1]
a[2]
2000
2008
2016
2000
2002
2008
2010
2016
2018
a[0][0]
a[0][1]
a[1][0]
a[1][1]
a[2][0]
a[2][1]
a[0][2]
a[0][3]
a[1][2]
a[1][3]
a[2][2]
a[2][3]
a
a+1
a+2
2

38
int a[3][4];
a[0][0]
a[0][1]
a[1][0]
a[1][1]
a[2][0]
a[2][1]
a[0][2]
a[0][3]
a[1][2]
a[1][3]
a[2][2]
a[2][3]
1a[1][2]
2*(a[1]+2)
3*(*(a+1)+2)
4*(&a[0][0]+1*4+2)
(1) a+1
(2) &a[1][0]
(3) a[1]
(4) *(a+1)
(5)(int *) (a+1)
(1) &a[1][2]
(2) a[1]+2
(3) *(a+1)+2
(4)&a[0][0]+1*4+2
3

39
a
a[0],*(a+0),*a 00
a+1 1
a[1],*(a+1) 10
a[1]+2,*(a+1)+2,&a[1][2] 12
*(a[1]+2),*(*(a+1)+2),a[1][2] 12
2000
2000
2008
2008
2012
13

40
main()
{ static int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
int *p;
for(p=a[0];p<a[0]+12;p++)
{ if((p-a[0])%4==0) printf("\n");
printf("%4d ",*p);
}
}
p=*a;
p=&a[0][0];
p=*(a+0);
p=a;
p=*a;
p=&a[0][0];
p=(int *)a;
p=a;
int a[3][4];
a[0][0]
a[0][1]
a[1][0]
a[1][1]
a[2][0]
a[2][1]
a[0][2]
a[0][3]
a[1][2]
a[1][3]
a[2][2]
a[2][3]
p

41
(*)[];
int (*p)[4];
int (*p)[4]int *p[4]
pp
int a[3][4],(*p)[4]=a;
int a[3][4];
a[0][0]
a[0][1]
a[1][0]
a[1][1]
a[2][0]
a[2][1]
a[0][2]
a[0][3]
a[1][2]
a[1][3]
a[2][2]
a[2][3]
a
a+1
a+2
p
p+1
p+2
p[0]+1 *p+1
p[1]+2 *(p+1)+2
*(*p+1) (*p)[1]
*(*(p+1)+2)

42
main()
{ int a[3][4]={{1,2,3,4},{3,4,5,6},{5,6,7,8}};
int i;
int (*p)[4]=a,*q=a[0];
for(i=0;i<3;i++)
{ if(i==0)
(*p)[i+i/2]=*q+1;
else
p++,++q;
}
for(i=0;i<3;i++)
printf("%d,",a[i][i]);
printf("%d,%d\n",*((int *)p),*q);
}
24753
1 2 3 4
3 4 5 6
5 6 7 8
p
q
2p
q
p
q

43
int x[][4]
int (*q)[4]
int x[][4]
int (*q)[4]
a
a
p1
p1
int a[3][4]; int (*p1)[4]=a; int *p2=a[0];
p2 int *q

44
main()
{ void average(float *p,int n);
void search(float (*p)[4],int n);
float score[3][4]=
{{65,67,79,60},{80,87,90,81},
{90,99,100,98}};
average(*score,12);
search(score,2);
}
void average(float *p,int n)
{ float *p_end,sum=0,aver;
p_end=p+n-1;
for(;p<=p_end;p++)
sum=sum+(*p);
aver=sum/n;
printf("average=%5.2f\n",aver);
}
void search(float (*p)[4],int n)
{ int i;
printf(" No.%d,\n",n);
for(i=0;i<4;i++)
printf("%5.2f ",*(*(p+n)+i));
}
float p[][4]
65 52 79 60
80 87 90 81
90 99 100 98
p
p
p[n][i]
34n

45
8.4
main( )
{ char string[]=“I love China!”;
printf(“%s\n”,string);
printf(“%s\n”,string+7);
}
I
l
o
v
e
C
h
i
string[0]
string[1]
string[2]
string[3]
string[4]
string[5]
string[6]
string[7]
string[8]
string[9]
string
string[10]
string[11]
string[12]
string[13]
n
!
a
\0

46
main( )
{ char *string=“I love China!”;
printf(“%s\n”,string);
string+=7;
while(*string)
{ putchar(string[0]);
string++;
}
}
I
l
o
v
e
C
h
i
string
n
!
a
\0
char *string;
string=“I love China!”;
string
*string!=0

47
1
2
a
I
a
m
a
t
e
a
c
e
h
\0
r
.
from
a b
y
u
a
r
a
s
u
t
n
d
e
to
b
o
e
t
.
\0
I
a
a
e
c
e
h
\0
r
.
t
.
\0
m
t
a
void copy_string(char from[],char to[])
{ int i=0;
while(from[i]!='\0')
{ to[i]=from[i];
i++;
}
to[i]='\0';
}
main()
{ char a[]="I am a teacher.";
char b[]="You are a student.";
printf("string_a=%s\n string_b=%s\n",a,b);
copy_string(a,b);
printf("\nstring_a=%s\nstring_b=%s\n",a,b);
}
void copy_string(char *from,char *to)
{ for(;*from!='\0';from++,to++)
*to=*from;
*to='\0';
}
main()
{ char *a="I am a teacher.";
char *b="You are a student.";
printf("string_a=%s\nstring_b=%s\n",a,b);
copy_string(a,b);
printf("\nstring_a=%s\nstring_b=%s\n",a,b);
}

48
char *cp; char str[20];
str cp
char str[20]; str=“I love China!”; (?)
char *cp; cp=“I love China!”; (?)
str cp
cp,
char str[10];
scanf(“%s”,str); (?)
char *cp;
scanf(“%s”,cp); (?)
,char *cp,str[10];
cp=str;
scanf(“%s”,cp); (?)

49
%s %c
char str[]={“Hello!”}; (?)
char str[]=“Hello!”; (?)
char str[]={?H?,?e?,?l?,?l?,?o?,?!?}; (?)
char *cp=“Hello”; (?)
int a[]={1,2,3,4,5}; (?)
int *p={1,2,3,4,5}; (?)
char str[10],*cp;
int a[10],*p;
str=“Hello”; (?)
cp=“Hello!”; (?)
a={1,2,3,4,5}; (?)
p={1,2,3,4,5}; (?)
scanf(“%s”,str);
printf(“%s”,str);
gets(str);
puts(str);

50
,
max
…...
1
2
:p=max;
(* )();
int (*p)();
c=max(a,b);? c=(*p)(a,b);? c=p (a,b);
p?n,p++,p--
( )
int (*p)() int *p()
8.5

51
void main()
{ int a,b,max(int,int),
min(int,int),add(int,int);
void process(int,int,int (*fun)());
scanf("%d,%d",&a,&b);
process(a,b,max);
process(a,b,min);
process(a,b,add);
}
void process(int x,int y,int (*fun)())
{ int result;
result=(*fun)(x,y);
printf("%d\n",result);
}
max(int x,int y)
{ printf(“max=”);
return(x>y?x:y);
}
min(int x,int y)
{ printf(“min=”);
return(x<y?x:y);
}
add(int x,int y)
{ printf(“sum=”);
return(x+y);
}

52
*();
int *f(int x,int y)
main()
{ float score[][4]={{60,70,80,90},
{56,89,67,88},{34,78,90,66}};
float *search(float (*pointer)[4],int n),*p;
int i,m;
printf("Enter the number of student:");
scanf("%d",&m);
printf("The scores of No.%d are:\n",m);
p=search(score,m);
for(i=0;i<4;i++)
printf("%5.2f\t",*(p+i));
}
float *search(float (*pointer)[4],int n)
{ float *pt;
pt=*(pointer+n);
return(pt);
}
pointer
pointer+1
34 78 90 66
56 89 67 88
60 70 80 90
score
p p p p
8.6

53
int *f1(int *x,int *y)
{
if(*x>*y)
return x;
else
return y;
}
main()
{ int a=2,b=3;
int *p;
p=f1(&a,&b);
printf("%d\n",*p);
}
…...
2000
2008
200A
2002
2004
2006
2
3
y
x(f1)
2002
2000
COPY
a
b
(main)
p**
int1

54
…...
…...
2000
2008
200A
2002
2004
2006
2 ab
(main)
3 p
**2002
int *f3(int *x,int *y)
{
if(*x>*y)
return x;
else
return y;
}
main()
{ int a=2,b=3;
int *p;
p=f1(&a,&b);
printf("%d\n",*p);
}
int2

55
int *f3(int x,int y)
{
if(x>y)
return &x;
else
return &y;
}
main()
{ int a=2,b=3;
int *p;
p=f3(a,b);
printf("%d\n",*p);
}
…...
2000
2008
200A
2002
2004
2006
2
3
y
x(f3)
3
2
COPY
a
b
(main)
p**
int3

56
…...
…...
2000
2008
200A
2002
2004
2006
2 ab
(main)
3 p
**200A
int *f3(int x,int y)
{
if(x>y)
return &x;
else
return &y;
}
main()
{ int a=2,b=3;
int *p;
p=f3(a,b);
printf("%d\n",*p);
}
int4

57
[] *[]
int *p[4];
int *p[4]int (*p)[4]:
main()
{ int b[2][3],*pb[2];
pb[0]=b[0];
pb[1]=b[1];
……..
}
int *pb[2]
pb[0]
pb[1]
int b[2][3]
1
2
3
2
4
6
:
main()
{ int b[2][3],*pb[ ]={b[0],b[1]};
……..
}
int *pb[2]
pb[0]
pb[1]
int b[2][3]
1
2
3
2
4
6

58
L i s p \0
F o r t r a n \0
B a s i c \0
p[0]
p[1]
p[2]
p[3] 0
:
main()
{ char a[]="Fortran";
char b[]="Lisp";
char c[]="Basic";
char *p[4];
p[0]=a; p[1]=b; p[2]=c; p[3]=NULL;
……..
}
:
main()
{ char *p[4];
p[0]= "Fortran";
p[1]= "Lisp";
p[2]= "Basic";
p[3]=NULL;
……..
}
:
main()
{ char *p[]={"Fortran","Lisp","Basic",NULL};
……..
}
i s \
F r t r a \
a s i c \
[0]
[1]
[2]
[3]

59
char name[5][9]={“gain”,“much”,“stronger”,“point”,“bye”};
char *name[5]={“gain”,“much”,“stronger”,“point”,“bye”};
g a i n \0
s t r o n g e r \0
p o i n t \0
m u c h \0
name[0]
name[1]
name[2]
name[3]
name[4] b y e \0
g a i n \0
s t r o n g e r \0
p o i n t \0
m u c h \0
b y e \0
= *2+

60
main()
{ int b[2][3],*pb[2];
int i,j;
for(i=0;i<2;i++)
for(j=0;j<3;j++)
b[i][j]=(i+1)*(j+1);
pb[0]=b[0];
pb[1]=b[1];
for(i=0;i<2;i++)
for(j=0;j<3;j++,pb[i]++)
printf("b[%d][%d]:%2d\n",i,j,*pb[i]);
}
int *pb[2]
pb[0]
pb[1]
int b[2][3]
b[0][0] *pb[0]
b[0][1] *(pb[0]+1)
b[0][2] *(pb[0]+2)
b[1][0] *pb[1]
b[1][1] *(pb[1]+1)
b[1][2] *(pb[1]+2)
1
2
3
2
4
6

61
main()
{ void sort(char *name[],int n),print(char *name[],int n);
char *name[]={"Follow me","BASIC",
"Great Wall","FORTRAN","Computer "};
int n=5;
sort(name,n);
print(name,n);
}
void sort(char *name[],int n)
{ char *temp;
int i,j,k;
for(i=0;i<n-1;i++)
{ k=i;
for(j=i+1;j<n;j++)
if(strcmp(name[k],name[j])>0) k=j;
if(k!=i)
{ temp=name[i]; name[i]=name[k]; name[k]=temp;}
}
}
name[0]
name[1]
name[2]
name[3]
name[4]
name
Great Wall
FORTRAN
Computer
Follow me
BASIC
k
jk
j
j
j
i=0
1

62
main()
{ void sort(char *name[],int n),print(char *name[],int n);
char *name[]={"Follow me","BASIC",
"Great Wall","FORTRAN","Computer "};
int n=5;
sort(name,n);
print(name,n);
}
void sort(char *name[],int n)
{ char *temp;
int i,j,k;
for(i=0;i<n-1;i++)
{ k=i;
for(j=i+1;j<n;j++)
if(strcmp(name[k],name[j])>0) k=j;
if(k!=i)
{ temp=name[i]; name[i]=name[k]; name[k]=temp;}
}
}
name[0]
name[1]
name[2]
name[3]
name[4]
name
Great Wall
FORTRAN
Computer
Follow me
BASICk
k
j
j
j
i=1
k
2

63
main()
{ void sort(char *name[],int n),print(char *name[],int n);
char *name[]={"Follow me","BASIC",
"Great Wall","FORTRAN","Computer "};
int n=5;
sort(name,n);
print(name,n);
}
void sort(char *name[],int n)
{ char *temp;
int i,j,k;
for(i=0;i<n-1;i++)
{ k=i;
for(j=i+1;j<n;j++)
if(strcmp(name[k],name[j])>0) k=j;
if(k!=i)
{ temp=name[i]; name[i]=name[k]; name[k]=temp;}
}
}
name[0]
name[1]
name[2]
name[3]
name[4]
name
Great Wall
FORTRAN
Computer
Follow me
BASICk
k j
j
i=2
3

64
main()
{ void sort(char *name[],int n),print(char *name[],int n);
char *name[]={"Follow me","BASIC",
"Great Wall","FORTRAN","Computer "};
int n=5;
sort(name,n);
print(name,n);
}
void sort(char *name[],int n)
{ char *temp;
int i,j,k;
for(i=0;i<n-1;i++)
{ k=i;
for(j=i+1;j<n;j++)
if(strcmp(name[k],name[j])>0) k=j;
if(k!=i)
{ temp=name[i]; name[i]=name[k]; name[k]=temp;}
}
}
name[0]
name[1]
name[2]
name[3]
name[4]
name
Great Wall
FORTRAN
Computer
Follow me
BASIC
k
k j
i=3
4

65
main()
{ void sort(char *name[],int n),print(char *name[],int n);
char *name[]={"Follow me","BASIC",
"Great Wall","FORTRAN","Computer "};
int n=5;
sort(name,n);
print(name,n);
}
void sort(char *name[],int n)
{ char *temp;
int i,j,k;
for(i=0;i<n-1;i++)
{ k=i;
for(j=i+1;j<n;j++)
if(strcmp(name[k],name[j])>0) k=j;
if(k!=i)
{ temp=name[i]; name[i]=name[k]; name[k]=temp;}
}
}
name[0]
name[1]
name[2]
name[3]
name[4]
name
Great Wall
FORTRAN
Computer
Follow me
BASIC
5

66
,
,
p1
&p2 &i 3
P2() i()int **p1;
int *p2;
int i=3;
p2=&i;
p1=&p2;
**p1=5;
:
int *p;
int i=3;
p=&i;
*p=5;
&i 3
P() i()

67
[] **
char **p;
int i,**p;
p=&i; (?)//p
int i=3;
int *p1;
int **p2;
p1=&i;
p2=&p1;
**p=5;
i
p1
p2
3
&i
&p1
**p2,*p1
*p2
int ***p;
char ****p;

68
2000
2008
200A
2002
2004
2006
1
2
a
b
(main)
p2000
q2002
#include <stdio.h>
void swap(int *r,int *s)
{ int *t;
t=r;
r=s;
s=t;
}
main()
{ int a=1,b=2,*p,*q;
p=&a;
q=&b;
swap(p,q);
printf("%d,%d\n",*p,*q);
}
2002
2000
COPY
s
r(swap)
t2000
2002
2000
1

69
2000
2008
200A
2002
2004
2006
1
2
a
b
(main)
p2000
q2002
#include <stdio.h>
void swap(int *r,int *s)
{ int *t;
t=r;
r=s;
s=t;
}
main()
{ int a=1,b=2,*p,*q;
p=&a;
q=&b;
swap(p,q);
printf("%d,%d\n",*p,*q);
},1,2
2

70
#include <stdio.h>
void swap(int *r,int *s)
{ int *t;
t=r;
r=s;
s=t;
}
main()
{ int a=1,b=2,*p,*q;
p=&a;
q=&b;
swap(p,q);
printf("%d,%d\n",*p,*q);
}
a
b
p
q
a
b
p
q
r
s
a
b
p
q
s
r
a
b
p
q,1,2
3

71
#include <stdio.h>
void swap(int **r,int **s)
{ int *t;
t=*r;
*r=*s;
*s=t;
}
main()
{ int a=1,b=2,*p,*q;
p=&a;
q=&b;
swap(&p,&q);
printf("%d,%d\n",*p,*q);
}
2000
2008
200A
2002
2004
2006
1
2
a
b
(main)
p2000
q2002
2006
2004
COPY
s
r(swap)
t
2000
2002
2000
4

72
#include <stdio.h>
void swap(int **r,int **s)
{ int *t;
t=*r;
*r=*s;
*s=t;
}
main()
{ int a=1,b=2,*p,*q;
p=&a;
q=&b;
swap(&p,&q);
printf("%d,%d\n",*p,*q);
}
2000
2008
200A
2002
2004
2006
1
2
a
b
(main)
p2000
q200220002002
,2,1
5

73
#include <stdio.h>
void swap(int **r,int **s)
{ int *t;
t=*r;
*r=*s;
*s=t;
}
main()
{ int a=1,b=2,*p,*q;
p=&a;
q=&b;
swap(&p,&q);
printf("%d,%d\n",*p,*q);
}
a
b
p
q
b
a
p
q
a
b
r
s
p
q
a
b
r
s
p
q
,2,1
6

74
1 2……… n
main(int argc,char *argv[])
{ ………
}
main
C:\TC> copy[.exe] source.c temp.c
3
main()
,main

75
int i;
int *p;
int a[n];
int *p[n];
int (*p)[n];
int f();
int *p();
int (*p)();
int **p;
i
p
na
np
pn
f
p
p
p