指针(Pointer)
来源:互联网 发布:高铭的书真实的吗 知乎 编辑:程序博客网 时间:2024/05/19 23:59
Q:为什么要使用指针?
A:可以实现 “主函数(实参传形参)–>调用函数(形参传实参)–>主函数” 的功能。
注意:如果不借助指针,我们只能实现 “主函数(实参传形参)–>调用函数”,而无法实现形参传实参的功能。最典型的一个例子就是交换函数
- 使用指针,按照大小顺序,输出两个值
版本1
借助指针:控制输出时的两个指针,两变量不变。
#include <iostream>using namespace std;int main(){ int a,b; int * pa=&a; int * pb=&b; //定义指针 cout<<"input two numbers"; cin>>a>>b; if (b>=a) { pa=&b; pb=&a; } //使用指针定义输出的变量 cout<< *pa<<*pb<<endl; return 0;}
版本2
借助指针:交换两个变量
#include <iostream>using namespace std;int main(){ void swap(int * p1,int * p2); int a,b; int * pa=&a, *pb=&b;//定义指针 cout<<"input two numbers"; cin>>a>>b; if(a<=b) swap(pa,pb); cout<<a<<b<<endl; return 0;}//注意:下面这个swap()函数的目的是交换两个指针变量所指变量,//而不是交换指针位置void swap(int * p1,int * p2){ int temp; temp= *p1; * p1=* p2; * p2=temp;}
2.使用指针,按照大小顺序,输出三个值
#include <iostream>using namespace std;int main(){ void exchange(int * p1,int * p2,int * p3); int a,b,c; int * pa=&a, *pb=&b,*pc=&c; cout<<"input three numbers"; cin>>a>>b>>c; exchange(pa,pb,pc); cout<<a<<b<<c<<endl; return 0;}//这里使用了一个两层调用函数的嵌套void exchange(int * p1,int * p2,int * p3){ void swap(int * k1,int * k2); if(* p1<=* p2) swap(p1,p2); if(* p1<=* p3) swap(p1,p3); if(* p2<=* p3) swap(p2,p3);}void swap(int * k1,int * k2){ int temp; temp=* k1; * k1= * k2; * k2= temp;}
3.指针在数组中的实现
例1:输出一个数组
#include <iostream>using namespace std;int main(){int a[5];int *p=a;//将数组a[10]的首元素a[0]赋给指针变量pfor (int i=1;i<6;i++) cin>>a[i];for (int j=1;j<6;j++) cout<<* (p+j)<<endl;//*(p+j)代表所指向的数组元素a[i]}
阅读全文
0 0
- 指针(Pointer)
- 084.Pointer Pointer 指向指针的指针
- 084.Pointer Pointer 指向指针的指针
- Smart Pointer--智能指针
- 智能指针(smart pointer)
- Wild Pointer 野指针
- 函数指针Function Pointer
- dangling pointer 悬垂指针
- 函数指针 Function Pointer
- 智能指针(smart pointer)
- 智能指针(Smart Pointer)
- 模拟指针(simulated pointer)
- C++ Pointer(指针)
- function pointer(函数指针)
- 065.Pointer 什么是指针
- 065.Pointer 什么是指针
- Pointer Alignment 指针对齐
- const pointer(const指针)
- byte[]和结构互转
- 关于C++输入的一些总结
- sklearn学习笔记之Kmeans聚类
- VS2013 查看程序各个函数的CPU利用率
- 4分钟_教你使用phpStudy在一个服务器上挂载多个网站
- 指针(Pointer)
- Windows环境配置SBT并创建Scala项目
- HW6UL-LITE 开发板简介
- Basler|CImageEventHandler类
- Barcode-EAN 13码生成校验位
- 版本更新相关,CFBundleVersion和CFBundleShortVersionString的比较,获取版本号
- Vector3.Slerp 球形插值详解
- 解决JQuery MiniUI前端库到期alert弹窗
- lua面向对象、继承、多态