A, 3+A printf( ABCDEF ) 3+ printf( ABCDEF )
2.1 C++
main main main)
* ( ) ( ) [ ].* ->* ()[] [][] ** *&
char (f)(int); ( ) (f) (f) f (int) f int char f char f(int) (f)
char (*f)(int); (*f) (int) ( ) (*f) (int) f int char
char *f(int); * (int) f(int) * f int char
C C++ int (*(**f)[10])(int, int); ** *f **f (**f) ( ) **f[10] f[10]
typedef typedef int (*F[10])(int, int); F *f; F *f f F F *f F *f int (*(*f)[10])(int, int); (int (*(*)[10])(int, int)) x
2.5 void * void main(void){ int p; float q, *m=&q; void *r=&p; *r=345; // : *(int *)r=345; // p=345 *(int *)r=3.14; // p=3 r=m; // void * *r=3.14; // : *(float *)r=3; // q=3.00 *(float *)r=3.14;// q=3.14 }
const, C++ #define
2.7 void main(void){ const char *ptc; // char * const cp="const pointer";// const char *const cptc="cstptc";// ptc="pointer to constant"; // *ptc='p'; // *ptc const char cp="const ptr"; // cp const *cp= Array of char [0]; //*cp char *cp='a' cptc="const to const ptr"; // cptc const *cptc='c'; // *cptr const char }
2.8
enum int =0 1 enum WEEKDAY {Sun, Mon, Tue, Wed, Thu, Fri, Sat}; typedef int WEEKDAY; const int Sun=0, Mon=1, Tue=2 const int Wed=3, Thu=4, Fri=5, Sat=6; WEEKDAY w1=sun w2(mon);// w2=mon enum WK {Su=-2, Mo, Tu, We, Th, Fr =1, Sa}; //We=1
volatile ( ) const volatile int y=3; volatile int x; x=3; if(x==4) cout<<"x changed by other routines"; 2.9 int1c main number main number
& ( ) ( ) ( ) C++
swap(int *x, int *y){ int t=*x; *x=*y; *y=t; } // swap(int&x, int&y){ int t=x; x=y; y=t; } //
2.11 #include <iostream.h> int strint(const char *str, int &val) { char c; //str val=0; while(c=*str++) // str if((c>='0')&&(c<='9')) val=val*10+c-'0'; else return 0; return 1; }
void main(int argc, char *argv[ ]) { int i, n; for(i=1; i<argc; i++) if(strint(argv[i], n))cout<<"argv["<<i<<"]="<<n<<"\n"; else cout<<"argument "<<i<<" is not a decimal"; }
2.12 ++ int inc(int &x) { return x++; } int i=1, j; char c=1; void main(void){ // j=inc(i); //i=2, j=1 i j=inc(++i); //i=4, j=3 i j=inc(i++); //i=5, j=4 i j=inc(i+5); //i=5, j=10 i j=inc(c); //c=1, j=1 c j=inc(++c); //c=2, j=2 c j=inc(c++); //c=3, j=2 c j=inc(c+5); //c=3, j=8 c } // c char int int &x
2.13 int i; // i=0 const int &j=2;// int &x=++i; //++i i int &y=i=0; //i=0 i int &z=y=3; //y=3 i int &f(int &v){ return v+=5;}// v void main(void){ int i=0;
const int k=10, &j=k; const int &m=2;// 2 ( ) const int &n=i; // int &x=i++; // int &y=++++i; //++++i y i int &z=i=4; //i=4 z i int &r=z=8; //z=8 r i i=3; //r=y=z=i=3 x=0 x=6; //x=6 r=y=z=i=3 r=12; //r=y=z=i=12 x=6 ++y=10; // ++y i 10 i r=y=z=i=10 (z=10)=15; // z=10 i 15 i r=y=z=i=15 (f(r)=1)=2; //f(r) r i (i=1) r=y=z=i=2 }
2.14 #include <stdio.h> char *&weekday(int &day){ static char *week[7]={"sun","man","the","wed","thu","fri","sat"}; return week[day++]; } void main(void){ int day=0; printf(weekday(day)); // Sun day=1 weekday(day)="mon"; // week[1] "Mon, day=2 weekday(day)[1]='u'; // "The" "Tue" day=3 printf(weekday(day+2));//day+2,,day=3 printf(weekday(day=0)); // Sun day=1 }
2.16 struct A{ int i:3; int j:4; int k; } a; int j(0); //C++ j=0 int &k=j++; //
void main(void){ register int i=0, &j=i;//i, j int &&m=j; // j int &*m; // int &s[4]; // int t[6], (&u)[6]=t;// u t int &v=t[0]; // v int &w=a.j; // int &x=a.k; //a.k }
C C++ overload call
2.7 #include <dos.h> #include <iostream.h> overload GetTime; // long GetTime(void){...} long GetTime(int &hours, int &minutes, int &seconds){...} void main(void){ int h, m, s; cout<<"now is "<<GetTime(h, m, s) cout<<" seconds from midnight,"; cout<<"or "<<h<<":"<<m<<":"<<s<<"\n"; }
: int printf(const char *format, ); long sum(int n,...){ long s=0; int *p=&n+1; for (int k=0; k<n; k++) s+=p[k]; return s; } void main( ){ int a=4; long s=sum(3,a,2,3); }
2.20 #include <conio.h> #include <stdio.h> intsayatxy(char*msg, intx=1, inty=1){ gotoxy(x, y); // x y return printf(msg); // msg } void main(void){ sayatxy("default"); // (1,1) Default sayatxy("default Line", 30);// (30,1) Default Line sayatxy("specified",1,2); // (1,2) Specified }
2.21 error( System A ) error(char *sys, char*msg="undefined error\n") error(char *sys, int code=0) error(char *sys, ) error(char *sys)
( ) ( ) 10 100 5 100*10+5=1005 20 100*10+20=1020 inline 5 100*5=500 20 100*20=3000
2.22 #include <iostream.h> inline double area(double r){ return 3.1415926*r*r; } void main(void){ double m; 3.1415926*m*m call area cout<<"please input a radius:"; cin>>m; cout<<"the area is "<<area(m); }
if, switch,while, for,do while,? :, static main main
A.CPP extern int f( ); int main( ){ return f( ); } B.CPP inline static int main( ) { return 3; } //static int f( ){ return main( ); } A.cpp B.cpp M.exe main A.cpp