C C C C(Vi
su
al
C+
+
6.
0
6
(1) C
(2)
(3)
(4)
(5)
(6)
(7)
6
(V
isu
al
C+
+
6.
0
6.2
6.3
6.5
6.4
6.1 C
(V
isu
al
C+
+
6.
0
6.1.1 C
6.1 C
(V
isu
al
C+
+
6.
0 2,C(2)
1,C(1)
6.1.1 C
6.1.1 C1
(V
isu
al
C+
+
6.
0
6.1
/*l5_1.cpp */
/**/
main()
{ int num_int=12,*p_int; /*intp_int */
float num_f=3.14,*p_f; /*floatp_f */
char num_ch=’p’,*p_ch; /*charp_ch */
p_int=&num_int; /*num_intp_int */
p_f=&num_f; /*num_fp_f */
p_ch=&num_ch; /*num_chp_ch */
printf(“num_int=%d,*p_int=%d\n”,num_int,*p_int);
printf(“num_f=%4.2f,*p_f=%4.2f\n”,num_f,*p_f);
printf(“num_ch=%c,*p_ch=%c\n”,num_ch,*p_ch);
}
num_int=12,*p_int=12
num_f=3.14,*p_f=3.14
num_ch=p,*p_ch=p
[6.1]
6.1.1 C2
(V
isu
al
C+
+
6.
0
6.22
/*l5_2.cpp */
/*2*/
main()
{ int num1,num2;
int *num1_p=&num1,*num2_p=&num2,*pointer;
printf(“Input the first number:,);
scanf(“%d”,num1_p);
printf(“Input the second number:,);
scanf(“%d”,num2_p);
printf(“num1=%d,num2=%d\n”,num1,num2);
if( *num1_p > *num2_p ) /*num1>num2*/
{ pointer= num1_p; num1_p= num2_p; num2_p=pointer; }
printf(“min=%d,max=%d\n”,*num1_p,*num2_p);
}
Input the first number:9<CR>
Input the second number:6<CR>
num1=9,num2=6
min=6,max=9
[6.2]
(V
isu
al
C+
+
6.
0
6.2.2
6.2.1
6.2
6.2.1
(V
isu
al
C+
+
6.
0
1
2
main()
{ int num;
scanf("%d",&num);
printf("num=%d\n",num);
}
Cnum id addr
num2 3000 30013000num
6.2.1
(V
isu
al
C+
+
6.
0
scanf(”%d“,&num);” printf(”num=%d\n“,num);”num
(1)──
scanf(“%d”,&num)
numnum300030003001
printf("num=%d\n",num)scanf( )
num300030003001
6.2.1
(V
isu
al
C+
+
6.
0
2──
num_pointer40004001 num_pointer=num num_pointernum3000
5.2 printf(“min=%d,max=%d\n”,*num1_p,*num2_p);
6.2.2
(V
isu
al
C+
+
6.
0
1──
2──
num_pointernum
3 *
num_pointernum
*num_pointer*num_pointernum
num=3; /*3num*/
num_pointer=&num; /*num_pointernum */
*num_pointer=3; /*3num_pointer*/
6.2.2
(V
isu
al
C+
+
6.
0
6.1 ──
*
*[,*2……];
p_intp_fp_ch
6.1──()
&num_int&num_f&num_chnum_intnum_fnum_ch
CNULL
p=NULL;
p
(V
isu
al
C+
+
6.
0
6.3.2
6.3.1
6.3
6.3.3
6.3.4
6.3.5
(V
isu
al
C+
+
6.
0
int array[10]; ( array10)
int *pointer pointer
int int
pointer= &array[0];
array[0] pointerpointer array0
C,
pointer= &array[0];
pointerarray;
pointerarray;” arraypointer” arraypointer”
6.3.2
(V
isu
al
C+
+
6.
0
int array[10],*pointer=array;”
1pointer+iarray+iarray[i]
2*(pointer+i)*(array+i)array[i]
3pointer[i]*(pointer+i)
pointer+1pointer+1pointer+1*size(size
pointer3000pointer+13000+1*2=30023001
6.3.2
(V
isu
al
C+
+
6.
0
6.3
/*l6_3.cpp */
/**/
main()
{ int array[10],*pointer=array,i;
printf(“Input 10 numbers:,);
for(i=0; i<10; i++)
scanf(“%d”,pointer+i); /**/
printf(“array[10]:,);
for(i=0; i<10; i++)
printf(“%d,,*(pointer+i)); /**/
printf(“\n”);
}
6.3.2
(V
isu
al
C+
+
6.
0
Input 10 numbers,0 1 2 3 4 5 6 7 8 9<CR>
array[10],0 1 2 3 4 5 6 7 8 9
362for
for(i=0; i<10; i++,pointer++)
scanf(“%d”,pointer);
printf(“array[10]:,);
pointer=array; /*pointer*/
for(i=0; i<10; i++,pointer++)
printf(“%d”,*pointer);
6.3.2
(V
isu
al
C+
+
6.
0
C
int a[M][N];
a[i][j]
ai Mj
a MN
6.3.2
(V
isu
al
C+
+
6.
0
i123…… i-12921311122day_of_year
/* */
/**/
#include <stdio.h>
main( )
{ static int day_tab[2][13]={
{0,31,28,31,30,31,30,31,31,30,31,30,31},
{0,31,29,31,30,31,30,31,31,30,31,30,31} };
int y,m,d;
scanf("%d%d%d",&y,&m,&d);
6.3.2
(V
isu
al
C+
+
6.
0
printf("%d\n",day_of_year(day_tab,y,m,d) ); /* */
}
day_of_year(day_tab,year,month,day)
int *day_tab; /* */
int year,month,day;
{ int i,j;
i = (year%4==0&&year%100!=0) || year%400==0;
for ( j=1; j<month; j++ )
day += *( day_tab+i*13+j );
/* day_tab+i*13+j */
return(day);
}
day_of_year "day_tab+i*13+j"mainday_tab
6.3.3
(V
isu
al
C+
+
6.
0
main ( )
int array[10]
f ( array,10 )
}
f ( arr,n )
int arr[ ],n ;
{
}
array arr
6.3.3
(V
isu
al
C+
+
6.
0
6.5a n
a [0]a[n-1 ]a[1]a[n-2]… … a[(n-1)/2] a [n-int((n-1)/2)] i j,i 0,j
n-1a[i]a[j] i 1,j 1 a[i]a[j]i =(n-1)/2
l6_5.cpp
Void inv(int x[],int n) /*x*/
{
int temp,i,j,m=(n-1)/2;
for(i=0;i<=m;i++)
{j=n-1-i;
temp=x[i];x[iI]=x[j];x[j]=temp;}
return;
}
main()
{ int i,a[10]={3,7,9,11,0,6,7,5,4,2};
for(i=0;i<10;i++)
6.3.3
(V
isu
al
C+
+
6.
0
printf(“%d,”,a[i]);
printf(“\n”);
inv(a,10);
for(i=0;i<10;i++)
printf(“%d,”,a[i]);
printf(“\n”);
}
381105947102<CR>
210749501183
a inv x,inv n 10 inv x main a main inv ( a,10 )” a 10 inv ( a,5 )” a 5
inv 5 inv m i i <m i > m
6.3.3
(V
isu
al
C+
+
6.
0
:
1
2
3
4
6.3.4
(V
isu
al
C+
+
6.
0
(1)
6.6
/*l6_6.cpp /
main()
{ char *string=”I love Beijing.”;
for(; *string!=’\0’; string++) printf(“%c”,*string);
printf(“\n”);
}
I love Beijing.
char *string="I love Beijing.";
string I love Beijing.”string
6.3.4
(V
isu
al
C+
+
6.
0
(2)
6.7[5.9]
/*l6_7.cpp */
/**/
main()
{
char *string=”I love Beijing.”;
printf(“%s\n”,string);
}
printf(“%s\n”,string);
stringstringstring
6.3.4
(V
isu
al
C+
+
6.
0
1
2
char *pointer;
pointer="This is a example.";
char char_array[20]
char_array="This is a example."; /**/
3
6.3.4
(V
isu
al
C+
+
6.
0
6.8
/*l6_8.cpp */
/**********************************************************/
/*string_copy()*/
/*str_from str_to */
/**/
/**********************************************************/
void string_copy(char *str_from,char *str_to)
{ int i=0;
for(; (*(str_to+i)=*(str_from+i))!=’\0’; i++) ; /**/
}
main()
{ char array_str1[20]=”I am a teacher.”;
char array_str2[20];
6.3.4
(V
isu
al
C+
+
6.
0
string_copy(array_str1,array_str2) ; /**/
printf(“array_str2=%s\n”,array_str2);
}
I am a teacher.
for(; (*(str_to+i)=*(str_from+i))!=’\0’; i++) ; i1
6.3.5
(V
isu
al
C+
+
6.
0
pp1pnpPp+1C++
(*)[]
int (*p)[4];
ppp
(1) *p*p[4][ ]p[4]**p[4]
6.3.5
(V
isu
al
C+
+
6.
0
(2) pn
6.9
l6_9.cpp
main()
{
int a[2][3]={1,3,5,7,9,11};
int (*p)[3];
int i,j;
p=a;
for(i=0;i<2;i++)
{ for(j=0;j<3;j++)
printf(“%2d”,(*p)[j]);
p++;
}}
1 3 5 7 9 11
(V
isu
al
C+
+
6.
0 6.4.2
6.4.3
6.4.1
6.4
6.4.1
(V
isu
al
C+
+
6.
0
6.4.1
(V
isu
al
C+
+
6.
0
6.10 6.2
/*l6_10.cpp /
/******************************************************/
/*exchange()2 */
/*2 */
/* */
/******************************************************/
void exchange(int *pointer1,int *pointer2)
{ int temp;
temp=*pointer1,*pointer1=*pointer2,*pointer2=temp;
}
/*main()*/
main()
{ int num1,num2; /*num1_p num2_p */
int *num1_p=&num1,*num2_p=&num2;
printf(“Input the first number:,); scanf(“%d”,num1_p);
printf(“Input the second number:,);
6.4.1
(V
isu
al
C+
+
6.
0
scanf(“%d”,num2_p);
printf(“num1=%d,num2=%d\n”,num1,num2);
if( *num1_p > *num2_p ) /* num1>num2)*/
exchange(num1_p,num2_p); /**/
printf(“min=%d,max=%d\n”,num1,num2); /*num1num2*/
}
Input the first number:9<CR>
Input the second number:6<CR>
num1=9,num2=6
min=6,max=9
pointer1num1pointer2num2
6.4.2
(V
isu
al
C+
+
6.
0
6.11:a b
l6_11.cpp
main ( )
{
int max( );
int (*p)( );
int a,b,c;
p=max;
scanf ("%d,%d”,&a,&b);
6.4.2
(V
isu
al
C+
+
6.
0
c=(*p) (a,b);
printf ("a= %d,b= %d,max = %d",a,b,c);
}
max (int x,int y)
{
int z;
if (x>y) z = x;
else z=y;
return (z)}
int (*p)( )p *p p * int *p” *
6.4.2
(V
isu
al
C+
+
6.
0
1
(*)( )
*
int (*fp)(); /* fpint*/
2
[&];
&”
(3)
(*)([])
(4)
(5) p+ip++/p--
6.4.2
(V
isu
al
C+
+
6.
0
6.12:process a b processa b a b
l6_12.cpp
main()
{
int max(int,int); /**/
int min(int,int); /**/
int add(int,int); /**/
int a,b;
scanf(“%d,%d”,&a,&b);
printf(“max=”);
6.4.2
(V
isu
al
C+
+
6.
0
process(a,b,max);
printf(“min=”);
process(a,b,min);
printf(“sum=”);
process(a,b,add);
}
max(int x,int y) /**/
{
int z;
if(x>y) z=x;
else z=y;
return(z);
}
min(int x,int y) /**/
{
int z;
if(x<y) z=x;
6.4.2
(V
isu
al
C+
+
6.
0
else z=y;
return(z);
}
add(int x,int y) /**/
{
int z;
z=x+y;
return(z);
}
process(int x,int y,int(*fun)(int,int)),int(*fun)(int,int)fun*/
/*,,.*/
{
int result;
result=(*fun)(x,y);
printf(%d\n”,result);
}
6.4.2
(V
isu
al
C+
+
6.
0
39<CR>
max=9
min=3
sum=12
maxmin sum main processa b processx y maxprocess ----funprocess(*fun)
( x,y ) max ( x,y ) processa b mainmin processfun min process(*fun) ( x,
y )min ( x,y )process(*fun) ( x,y )add ( x,y )max minadd process process
6.4.3
(V
isu
al
C+
+
6.
0
*([])
int *pr(x,y);
pr x y pr *prpr**,a *,int
(V
isu
al
C+
+
6.
0 6.5.2
6.5.3 main
6.5.1
6.5
6.5.1
(V
isu
al
C+
+
6.
0
int a,*p;
p=&a;
pa,p*pa.ppppppp=&p;
ppppp*pppC++pp
**[,**2……]
6.5.1
(V
isu
al
C+
+
6.
0
6.13
l6_13.cpp
main ( )
{
static char * name[ ]= {"Follow me","BASIC","FORTRAN","Great
Wall","Computerdesign"};
char * * p;
int i;
for(i=0;i<5;i++)
{ p=name+i;
printf(“%s\n”,*p); }
}
}
:
Follow me
BASIC
FORTRAN
Great Wall
Computerdesign
6.5.1
(V
isu
al
C+
+
6.
0
int a[5]={l,3,5,7,9 },
int *num[5]={&a[0],&a[l],&a[2],&a[3],&a[4};
int * * p ;
5 " p =num + 2 ** p *p p **p p
6.5.2
(V
isu
al
C+
+
6.
0
*[]
(V
isu
al
C+
+
6.
0
mainmain
main ( )
main
main (argc,argv)
int argc; /* argc */
char *argv[ ]; /* argv */
argcargvmain
main
12…… n
argcargvargv[0]argv[1]1argv[2]2……
(V
isu
al
C+
+
6.
0
6.6.1
6.6
6.6.1
(V
isu
al
C+
+
6.
0
,( reference C + C
a b
int a ;
int &ba ;
b a a a b & a b b a
6.6.1
(V
isu
al
C+
+
6.
0
6.14:
l6_14.cpp
# include <Ciostream,h>
tt include <iomanip,h>
void main( )
{
int a = 10;
int &b = a; //b a //
a = a * a; //a b //
cout <<a<<setw(6)<<b;
b = b/5; // b a //
cout<<b<<setw(6)<<a; }
6.6.1
(V
isu
al
C+
+
6.
0
a 10b a 10 a 100 ( a * a b 100 a b b 20 a 20
100 100
20 20
3,
(V
isu
al
C+
+
6.
0
6.7.1
6.7
6.7.1
(V
isu
al
C+
+
6.
0
C + new delete
new
new []
new
delete
delete
newdelete
newdelete
delete ;
delete new
new NULL,
new delete