第六章善于使用指针与引用
2013-05-01 12:24
260 查看
//p161 //通过指针变量访问整型变量 #include <iostream> using namespace std; int main() { int a,b; int *pointer_1,*pointer_2; a=100; b=10; pointer_1=&a; pointer_2=&b; cout<<a<<" "<<b<<endl; cout<<*pointer_1<<" "<<*pointer_2<<endl; return 0; }
运行结果:
//p162 //用指针变量处理,按先后大小输出a,b #include <iostream> using namespace std; int main() { int *p1,*p2,*p,a,b; cin>>a>>b; p1=&a; p2=&b; if(a<b) { p=p1; p1=p2; p2=p; } cout<<"a="<<a<<" b="<<b<<endl; cout<<"max="<<*p1<<" min="<<*p2<<endl; return 0; }运行结果:
//p163 //用指针作函数参数,按先后大小输出a,b #include <iostream> using namespace std; int main() { void swap(int *p1,int *p2); int *pointer_1,*pointer_2,a,b; cin>>a>>b; pointer_1=&a; pointer_2=&b; if(a<b)//如果a<b,使 *pointer_1,*pointer_2互换 swap(pointer_1,pointer_2); cout<<"max="<<a<<" min="<<b<<endl; return 0; } void swap(int *p1,int *p2) { int temp; temp=*p1; *p1=*p2; *p2=temp; }运行结果:
//p167 //用三个指针变量指向三个整型变量,用swap函数实现互换三个变量的值 #include <iostream> using namespace std; int main() { void exchange(int *,int *,int *);//对exchange函数的声明 int a,b,c,*p1,*p2,*p3; cin>>a>>b>>c; p1=&a; p2=&b; p3=&c; exchange(p1,p2,p3);//交换p1,p2,p3指向的三个整型变量的值 cout<<a<<" "<<b<<" "<<c<<endl; return 0; } void exchange(int *q1,int *q2,int *q3) { void swap(int *,int *);//对swap函数声明 if(*q1<*q2) swap(q1,q2);//调用swap函数,将q1与q2所指向的变量的值互换 if(*q1<*q3) swap(q1,q3); if(*q2<*q3) swap(q2,q3); } void swap(int *pt1,int *pt2)//将pt1与pt2所指向的变量的值互换 { int temp; temp=*pt1; *pt1=*pt2; *pt2=temp; }运行结果:
//p169 //用指针变量指向数组元素 #include <iostream> using namespace std; int main() { int a[10]; int i,*p=a;//指针变量p指向数组a的首元素a[0] for(i=0;i<10;i++) cin>>*(p+i); for(p=a;p<(a+10);p++)//p先后指向a[0]~a[9] cout<<*p<<" "; cout<<endl; return 0; }
运行结果:
//p170 //用指针变量作函数形参接受数组地址 #include <iostream> using namespace std; int main() { void select_sort(int *p,int n);//函数声明 int a[10],i; cout<<"Please enter the originl array:"<<endl; for(i=0;i<=9;i++) cin>>a[i]; select_sort(a,10); cout<<"The sorted array:"<<endl; for(i=0;i<=9;i++) cout<<a[i]<<" "; cout<<endl; return 0; } void select_sort(int *p,int n)//用指针变量作形参 { int i,j; for(i=0;i<n-1;i++) { for(j=i+1;j<=n-1;j++) if(*(p+j)<*(p+i))//用指针法访问数组元素 { int t=*(p+j); *(p+j)=*(p+i); *(p+i)=t; } } }运行结果:
//p173 //用字符指针指向一个字符串 #include <iostream> using namespace std; int main() { char *str="I love CHINA!"; cout<<str<<endl; return 0; }运行结果:
//p174 //用字符指针将字符串str1复制给字符串str2 #include <iostream> using namespace std; int main() { char str1[]="I love CHINA!",str2[20],*p1,*p2; p1=str1; p2=str2; for(;*p1!='\0';p1++,p2++) *p2=*p1; *p2='\0'; p1=str1; p2=str2; cout<<"str1 is:"<<p1<<endl; cout<<"str2 is:"<<p2<<endl; return 0; }运行结果:
//p176 //用一个指针变量指向函数,然后通过该指针变量调用此函数 #include <iostream> using namespace std; int main() { int max(int,int);//函数声明 int a,b,m; int (*p)(int,int);//定义指向函数的指针变量p p=max;//使p指向函数max cin>>a>>b; m=p(a,b); cout<<"max="<<m<<endl; return 0; } int max(int x,int y) { int z; z=x>y?x:y; return z; }运行结果:
//p178 //用指针数组对字符串排序 #include <iostream> using namespace std; int main() { void sort(char *name[],int n);//函数声明 void print(char *name[],int n);//函数声明 char *name[]={"BASIC","FORTRAN","C++","Pascal","COBOL"};//定义指针数组 int n=5; sort(name,n); print(name,n); return 0; } 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-1;j++) if(strcmp(name[k],name[j])>0) k=j; if(k!=i) { temp=name[i]; name[i]=name[k]; name[k]=temp; } } } void print (char *name[],int n) { int i; for(i=0;i<n;i++) cout<<name[i]<<endl; }
运行结果:
//p180 //指向指针的指针 #include <iostream> using namespace std; int main() { char **p;//定义指向字符指针数据 的指针变量p char *name[]={"BASIC","FORTRAN","C++","Pascal","COBLO"}; p=name+2; cout<<*p<<endl;//输出name[2]指向的字符串 cout<<**p<<endl;//输出name[2]指向的字符串中的第一个字符 return 0; }
运行结果:
//p188 //引用的简单使用 #include <iostream> #include <iomanip> using namespace std; int main() { int a=10; int &b=a;//声明b是a的引用 a=a*a;//a的值变化了,b的值也应一起变化 cout<<a<<setw(6)<<b<<endl; b=b/5;//b的值变化了,a的值也应一起变化 cout<<b<<setw(6)<<a<<endl; return 0; }
运行结果:
//p189 //使用指针变量作形参,实现两个变量的互换 #include <iostream> using namespace std; int main() { void swap(int *,int *); int i=3,j=5; swap(&i,&j);//实参是变量的地址 cout<<i<<" "<<j<<endl;//i和j的值已互换 return 0; } void swap(int *p1,int *p2)//形参是指针变量 { int temp; temp=*p1; *p1=*p2; *p2=temp; }运行结果:
//p190 //用引用作形参实现两个值的互换 #include <iostream> using namespace std; int main() { void swap(int &,int &); int i=3,j=5; swap(i,j);//实参为整型变量 cout<<"i="<<i<<"\n" <<"j="<<j<<endl; return 0; } void swap(int &a,int &b)//形参是引用 { int temp; temp=a; a=b; b=temp; }运行结果:
//p191 //使用引用对三个变量从小到大排序 #include <iostream> using namespace std; int main() { void sort(int &,int &,int &);//函数声明,形参是引用 int a,b,c; cout<<"Please enter 3 integers:"<<endl; cin>>a>>b>>c; sort(a,b,c);//调用sort函数,a,b,c为实参 cout<<"The sorted order is:"<<endl <<a<<" "<<b<<" "<<c<<" "<<endl; return 0; } void sort(int &i,int &j,int &k)//对i,j,k三个数排序 { void change(int &,int &);//函数声明,形参是引用 if(i>j) change(i,j); if(j>k) change(i,k); if(j>k) change(j,k); } void change(int &x,int &y)//使x和y互换 { int temp; temp=x; x=y; y=temp; }运行结果:
相关文章推荐
- 第六章 善于使用指针与引用
- C++指针与引用(三):引用使用注意事项
- 【C++】使用局部变量赋值而非引用,导致内存多次释放的野指针问题
- 什么时候该使用指针和引用
- 模板继承中注意的一个问题,只能使用指针或引用的形式
- 什么时候使用引用?和什么时候使用指针
- 第10章 指针(五) 使用地址-------指针的引用
- C++建立单向链表链表头指针需要使用指针类型的引用参数?
- 到底是使用引用还是指针?
- C/C++何时使用引用和指针
- 智能指针的实现--使用引用计数实现以及原理
- C/C++何时使用引用和指针
- 彻底理解链表中为何使用二级指针或者一级指针的引用
- More Effective C++----(1)指针与引用的区别 & (2)尽量使用C++风格的类型转换 & (3)不要对数组使用多态
- 超前引用不可使用类名来定义变量和函数的变量参数,只可用来定义引用或者指针。
- 引用和指针使用原则
- Javascript引用指针使用介绍
- 引用、指针、值传递的使用原则
- 指针与引用的混合使用总结
- C/C++何时使用引用和指针