首页 / C++ / C++ 之 指针详解篇(一)
C++ 之 指针详解篇(一)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C++ 之 指针详解篇(一),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1967字,纯文字阅读大概需要3分钟。
内容图文
C++的指针太重要了,我们有必要去掌握它。所以必须认真的对待指针。先来讲解什么是指针。(重点掌握)
指针是存储内存地址的变量,内存又是什么?内存是干啥用的?简单的说,就是存储一些二进制数据,它是按一定的顺序存储的线性单元结构。那一个数据又是如何存储在内存的呢?这些问题都是汇编的基础知识,如果你学过汇编理解这真的不是难事。闲话越扯越远了,通常数据的存储在内存地址中,不同的计算机它的地址也会不同。假设我们存储了一个变量是整形的,系统会自动的分配一个内存地址给它,要获取内存地址,可以用&运算符。结合示例演示
#include <iostream> usingnamespace std; int main() { int i; long j; bool t; i = 5; j = 100L; t = true; cout <<"i = "<<i<<", &i = "<<&i<<endl; cout<<"j = "<<j<<", &j ="<<&j<<endl; cout<<"t ="<<t<<", &t = "<<&t<<endl; return0; }
输出结果为:
i = 5, &i = 0012FF7C
j = 100, &j =0012FF78
t =1, &t = 0012FF70
这里的i,j,t的地址用&运算符就可以得到。
每个变量都有地址,我们不知道变量的具体地址,这个时候可以用指针来存储就很方便,当我们需要访问变量的地址的时候,一个指针就轻松的帮我们解决问题。那如果定义一个指针呢?
很简单假如我们存储变量是整形的
int *p;
先来理解这句话的含义:p是一个int类型的指针,p也就可以存储一个变量的地址如上所示
p = &i;
我们就用p存储了i的地址,是不是很方便啊,现在我们已经清楚的知道如何定义一个指针,就是在这个变量前加一个*号.
我们只知道如何定义一个指针,如何使用指针?那如何去获取指针上的值呢?
*p = i;
刚才p指针指向了i的地址,那*p就是i地址上的值,我们可以上机实验就可以得知。我们知道用指针获取变量i上的值这是间接的访问了变量i
*号就是间接的访问了变量i *号具体含义就是存储变量地址上的值
我们不能用
p = i; //不能将一个变量(i)赋给一个地址(p)
学好指针一定用弄清楚指针的地址,指针上的值。结合示例
using namespace std; int main() { int a; int* p; a = 5; p = &a; cout<<"*p = "<<*p<<endl; *p = 7; cout <<"*p = "<<*p<<" , a = "<<a<<endl; a = 0; cout<<"a = "<<a<<" *p= "<<*p<<endl; return0; } 输出结果: *p = 5 *p = 7 , a = 7 a = 0 *p= 0
从上得出结论当*p被改变的时候,a的值也会改变。当a的值发生改变,*p也会发生改变。也就说明*能改变一个变量地址上的值。
那指针能定义一个数组类型的吗?答案当然是可以的。其实在c++中,数组名就是一个常量指针,指向了数组的第一个元素。
结合示例演示 数组和指针的关系
#include <iostream> usingnamespace std; int main() { int i[5] = {1,2,3,4,5}; constint* p = i; for (int j = 0; j< 5;j++) { cout<<"i["<<j<<"] = "<<p[j]<<endl; } return0; }
输出结果
i[0] = 1
i[1] = 2
i[2] = 3
i[3] = 4
i[4] = 5
我们用指针p访问了数组i,而数组i的地址就是第一个元素的地址,我们可以用p[j]或者用*(p+j)访问后面的元素,2者的输出结果一样。
原文:http://www.cnblogs.com/delphi2014/p/4018772.html
内容总结
以上是互联网集市为您收集整理的C++ 之 指针详解篇(一)全部内容,希望文章能够帮你解决C++ 之 指针详解篇(一)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。