博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
指针知识(一):指针声明
阅读量:6345 次
发布时间:2019-06-22

本文共 1735 字,大约阅读时间需要 5 分钟。

由于指针可以直接引用它所指向的数值,数值是有类型的,因此在声明指针的时候要指明它所指向的数据类型

指向一个整型(int)或浮点型(float)数据的指针与指向一个字符型(char)数据的指针并不相同。

因此,声明指针的格式如下:

type * pointer_name;

这里,type 是指针所指向的数据的类型,而不是指针自己的类型。例如:

int * number; char * character; double * decimals;

 

 

 

 

它们是3个指针的声明,每一个指针指向一种不同数据类型。这三个指针本身其实在内存中占用同样大小的内存空间(指针的大小取决于不同的操作系统),但它们所指向的数据是不同的类型,并占用不同大小的内存空间,一个是整型int,一个是字符型char ,还有一个是浮点型float。

需要强调的一点是,在指针声明时的星号asterisk (*) 仅表示这里声明的是一个指针,不要把它和前面我们用过的引用操作符混淆,虽然那也是写成一个星号 (*)。它们只是用同一符号表示的两个不同任务。

一个简单的例子:例1

//my first pointer#include 
using namespace std;int main (){ int firstvalue, secondvalue; int * mypointer; mypointer = &firstvalue; *mypointer = 10; mypointer = &secondvalue; *mypointer = 20; cout << "firstvalue is " << firstvalue << '\n'; cout << "secondvalue is " << secondvalue << '\n'; return 0;}
输出:firstvalue is 10secondvalue is 20

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

注意变量firstvalue 和 secondvalue 是怎样间接被赋予数值的。首先我们使用 ampersand sign (&) 将firstvalue的地址赋给mypointer 。然后我们将10 赋给 mypointer所指向的数值,它其实指向firstvalue的地址,因此,我们间接赋予了firstvalue的数值。

为了让你了解在同一个程序中一个指针可以被用作不同的数值,我们在这个程序中用value2 和同一个指针重复了上面的过程。

一个稍复杂的例子,让你更深理解指针:例2

//second example#include 
using namespace std;int main (){ int firstvalue = 5, secondvalue = 15; int * p1, * p2; p1 = &firstvalue; //p1存储的是firstvalue地址 p2 = &secondvalue; //p2存储的是secondvalue地址 *p1 = 10; //指针p1指向的值为10,            //地址是firstvalue的地址,即firstvalue=10 *p2 = *p1; //secondvalue=10 p1 = p2; //p2存储的地址给p1,p1指向secondvalue *p1 = 20; //secondvalue= 20; cout << "firstvalue is " << firstvalue << '\n'; cout << "secondvalue is " << secondvalue << '\n'; return 0;}
输出:firstvalue is 10secondvalue is 20

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

注释写的很清楚了,自己要多练去理解。

 

转载于:https://www.cnblogs.com/guozqzzu/p/3592329.html

你可能感兴趣的文章
育碧同 Mozilla 联手开发 AI 代码助手
查看>>
【实用】面对枯燥的源码,如何才能看得下去?
查看>>
智库说 | 徐远:数字时代的城市潜力
查看>>
《JSP极简教程》jsp c:forEach用法
查看>>
WebSocket详解(六):刨根问底WebSocket与Socket的关系
查看>>
用 Go 写一个轻量级的 ssh 批量操作工具
查看>>
网站设计之合理架构CSS 架构CSS
查看>>
OTP 22.0 RC3 发布,Erlang 编写的应用服务器
查看>>
D语言/DLang 2.085.1 发布,修复性迭代
查看>>
感觉JVM的默认异常处理不够好,既然不好那我们就自己来处理异常呗!那么如何自己处理异常呢?...
查看>>
Java 基础 之 算数运算符
查看>>
Windows下配置安装Git(二)
查看>>
一个最简单的基于Android SearchView的搜索框
查看>>
铁路开通WiFi“钱景”不明
查看>>
Nutanix领衔的超融合能带来新存储黄金时代吗?
查看>>
Facebook申请专利 或让好友及陌生人相互拼车
查看>>
电力“十三五”规划:地面光伏与分布式的分水岭
查看>>
美联社再告FBI:要求公开请黑客解锁iPhone花费
查看>>
三星电子出售希捷和夏普等四家公司股份
查看>>
任志远:当云计算遇上混合云
查看>>