博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[C++]指针浅析
阅读量:6202 次
发布时间:2019-06-21

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

Date:

2014-1-4

 

summary

指针的简单理解,概念性的东西会比较多(100个人有100种理解,此处只代表我个人看法) 

 

Contents

1.什么是指针 

c++ primer plus中提到,变量是在编译时分配的有名称的内存,而指针只是为了可以通过名称直接访问内存而提供了一个别名。指针的真正用武之地在于:在运行阶段分配未命名的内存以存储值 

 

2.指针和指针变量 

在工作沟通交流中,嘴里一直说得指针,其实是[指针变量]的简称,它是一种数据类型,一种复合的数据类型,使用int*来声明,用于存储内存地址。 

所以,在我们平时工作讨论问题时所说的“指针”,通常就是指针变量 

 

3.使用指针 

a).特定类型的指针只能指向对应的数据类型(void* 可以指向任何类型) 

b).指针一般配合[取地址操作符]和 [解引用操作符]使用 

c).指针的size由计算机硬件决定,同一台计算机中,指针的size一致,不会因为它所指向的数据类型不同而不同 

d).指针可以做运算操作。 

(这里并没有提到New和Delete操作符,因为个人认为它们是内存管理相关,不应在此处谈论,这样Focus的点就在于指针本身与内存管理无关,这样会清晰一点) 

 

Ex:

// a)    //运行时创建了一个int类型的变量(一块内存空间),指针p1帮助我们可以访问这块内存空间的值,这就是指针存在的意义    int* p1 = new int(10);    cout << "运行时创建的数为:" << (*p1) << endl;        //因为p1,我们可以访问它指向的内存空间,所以我们可以通过它修改内存空间的值    (*p1)+= 100;        cout << "修改新创建的内存空间,它的指为:" << (*p1) << endl;    delete p1;    p1 = nullptr;            // b)    double doubleNum = 1.23;    int intNum = 123;        p1 = &intNum;    // p1 = &doubleNum; //编译器报错,指针变量类型应该与所指向的变量类型一致    cout << "p1指向的新内存空间的值为:" << (*p1) << endl;            // c)    cout << "本台计算机中,使用" << sizeof(p1) << "个字节存储一个指针变量" << endl;            // d)    int arrayInt[] = {1,2,3,4,5};    p1 = arrayInt;    cout << "p1指向的空间的指为:" << (*p1) << endl;        // 对指针做运算    p1 += 3;        cout << "运算操作后,p1指向的空间的指为:"         << (*p1)         << "与之前相比,指针向它的连续内存空间移动了3个单元,偏移量为:"         << sizeof(p1) * 3 << "个字节"         <<  endl;

 

Notes:

nothing

 

THE END

转载于:https://www.cnblogs.com/hellenism/p/3504842.html

你可能感兴趣的文章
关于Unity中UI中的Image节点以及它的Image组件
查看>>
神奇的图像处理算法
查看>>
java maven 操作 收集的一些命令
查看>>
springcloud-05-ribbon中不使用eureka
查看>>
SPOJ QTREE6 lct
查看>>
Java - 对象(object) 具体解释
查看>>
[.NET跨平台]Jexus独立版本的便利与过程中的一些坑
查看>>
swift菜鸟入门视频教程-09-类和结构体
查看>>
Oracle数据库备份恢复,巡检须要关注的对象设置以及相关恢复概述
查看>>
jQuery序列化表单为JSON对象
查看>>
使用malloc分别分配2KB的空间,然后用realloc调整为6KB的内存空间,打印指针地址...
查看>>
Redis 它是什么?它用来做什么?它的优势与短板如何?
查看>>
vue13过滤器 debounce延迟、limitBy、filterBy、orderBy
查看>>
MSSQL分组取后每一组的最新一条记录
查看>>
jQ效果:简单的手风琴效果
查看>>
Android Studio环境搭建
查看>>
Java Persistence with MyBatis 小结2
查看>>
python socket 多人聊天室
查看>>
nodejs中require的路径是一个文件夹时发生了什么
查看>>
P1401 城市(30分,正解网络流)
查看>>