在C语言和C++中,指针是非常重要的一部分,程序的执行过程中可以通过指针来找到要操作的数据和可执行的函数代码。很多人就明白指针和地址是有区别的,但是很少有人能说清楚这种区别。

  指针总共可以分为两种,函数指针和数据指针。而指针和地址最大的区别就是指针是有类型的,地址是没有类型的。我们当然可以通过绝对地址的方式找到函数和数据,但是地址是没有类型的,不能对地址进行算术操作,在涉及诸如数组等操作时就不能通过地址的自增和自减来访问数组的各个变量。但是通过对指针的引用,就可以通过对指针进行一系列的加加减减操作很方便的访问数组的各个元素。

  所以,指针是由地址和类型两部分构成的,指向数据的指针不仅记录该数据的在内存中的存放的地址,还记录该数据的类型,即在内存中占用几个字节,这是地址所不具有的。指向函数的指针不仅记录函数的入口地址,也记录该函数的类型,即函数的返回值类型和该函数的参数类型。

在C++中还有一种特殊的数据类型,那就是对象,这是一种用户自定义的数据类型。它即包含了数据,又包含了函数。但是在同一个类模板声明的对象变量各自拥有一份数据成员,却共享一份函数成员,因为对有共同类模板的对象来说,他们的数据成员可能不同,但是他们的用来处理数据的函数代码确是相同的,所以他们共享一份成员函数。而此时,对象的指针指向的各自的数据成员。

指针的使用一定要特别小心,千万不能越界,否则会出现意想不到的结果。而且一定不要使用未初始化过的指针,这样将会访问到位置的内存,有可能会给操作系统带来毁灭性的灾难,虽然健壮的操作系统一般不会允许这么做。

转载于:https://www.cnblogs.com/chenchenluo/archive/2011/09/27/2193267.html

C和C++中指针与地址的区别相关推荐

  1. C语言中指针的地址和内容

    参考:C语言中指针的地址和内容 作者:wallying 发布时间:2018-10-18 09:47:54 网址:https://blog.csdn.net/qq_36631580/article/de ...

  2. %p 打印地址?它打印的是变量值!什么是格式化输出,指针与地址的区别

    不要再被什么"%p 打印变量地址"."%p 格式化地址" 误导了! 不要把指针神秘化.复杂化,它就是一个有点特殊的变量而已! 首先说指针与地址的区别: 指针是一 ...

  3. C/C++ 中指针和引用的区别

    C/C++ 中指针和引用的区别 1.指针有自己的一块空间,而引用只是一个别名: 2.使用 sizeof 看一个指针的大小是 4,而引用则是被引用对象的大小: 3.指针可以被初始化为 NULL,而引用必 ...

  4. C语言中指针和数组的区别

    看<C专家编程>一书,看到数组与指针并不相同一章,遂做了一段测试: 代码: #include <stdio.h> #include <stdlib.h>int ma ...

  5. C++中指针和引用的区别与联系

    原文地址:http://blog.csdn.net/thisispan/article/details/7456169 ★ 相同点: 1. 都是地址的概念: 指针指向一块内存,它的内容是所指内存的地址 ...

  6. c++中指针p,*p的区别

    简单的来说p就是地址,是&a,*p就是a 指针的创建: int* p = 100; //创建一个指针,改变指针指向地址所在内容为100: int a = 50: int* p = &a ...

  7. C++中指针与引用的区别

    指针的本质 指针p也是对象,只不过p存储的数据类型是它所指的对象的地址.可以通过解引用操作符""来访问对象的值,即p. 对象有常量(const)和非常量之分,如果指针本身是常量,即 ...

  8. C++中指针和引用的区别

    指针和引用在C++中很常用,但是对于它们之间的区别很多初学者都不是太熟悉,下面来谈谈他们2者之间的区别和用法. 1.指针和引用的定义和性质区别: '*'表示这是一个指针变量,指针名为定义的指针变量名, ...

  9. C语言中指针与数组的区别,C语言 指针与数组的详解及区别

    C语言 指针与数组的详解及对比 通俗理解数组指针和指针数组 数组指针: eg:int( *arr)[10]; 数组指针通俗理解就是这个数组作为指针,指向某一个变量. 指针数组: eg:int*arr[ ...

最新文章

  1. UI培训技术分享:设计大神都在用的10种技法!
  2. AI 还原宋代皇帝,原来这么帅?!
  3. 矩阵连乘问题(动态规划算法)
  4. 黑马训练营自学笔记(03)
  5. B/S开发中浏览器的工具利器
  6. 【转】.net异步性能测试(包括ASP.NET MVC WebAPI异步方法)
  7. Android控件第6类——杂项控件
  8. Android批量图片加载经典系列——使用二级缓存、异步网络负载形象
  9. linux驱动程序文件,急,linux驱动程序是对的为什么生成不了.o驱动程序文件
  10. 笔记本电脑小键盘上有 home、pgup、pgdn、如何使用
  11. canvas实现圆饼图,柱状图,折线图(满满的干货)
  12. CATIA如何实现设计模块快速切换?
  13. java视频格式转_java 实现 视频格式转换(转)
  14. NoteExpress中遇到的坑
  15. 剑斩楼兰的将军之路:多属性决策模型。
  16. Unity一键发包工具
  17. 微信小程序九宫格预览+单张图片预览
  18. 如何用java股票量化交易接口读取股票数据?
  19. 安德玛交互式体验旗舰店杭州开业;因美纳新一代基因测序仪在华上市;苏伊士集团扩大在华业务布局 | 美通企业周刊...
  20. windows桌面消失,没有任何图标的解决办法

热门文章

  1. Vue js 的生命周期(看了就懂)
  2. IQueryable和IEnumerable的区别
  3. 替换字符串空格 - Java - StringBuffer
  4. .NET 之美-认识.NET平台
  5. FileUpload控件
  6. ylbtech-LanguageSamples-UserConversions(用户定义的转换)
  7. cocos3 深入理解tank和子弹之间的关系
  8. 通过MageUi.exe修改通过ClickOnce发布过的WPF browser application 配置文件
  9. 基于OpenCV调整图像的对比度和亮度
  10. Caffe 编译安装