C/C++指针概念及使用

原创 2018年04月15日 17:51:22

什么是指针

根据"The C programming language(2rd)"书中定义的, "A pointer is a variable that contains the address of a variable. "

翻译过来为:指针是一个包含变量地址的变量. 

即指针中保存的是另外一个变量的地址.

写一段程序来详解一下:


对这段程序进行编译:


很多初学者容易产生的一个误区是指针的地址就是它所指向的变量的地址,事实上并不是.

从编译结果可以看出, 指针中保存的内容是它所指向的变量的地址, 通过对指针解引用来获取它所指向的变量的内容,通过&p_a看出此处指针和变量并不是同一地址.

int *p_a = &a; // 这里定义一个int型指针, 把a的地址作为p_a的内容,需要注意的是此处的"*"是定义该变量位指针.

后面输出的 "*p_a"表示对该指针解引用(derefrence), 获得它所指向的内存单元的内容.


指针的类型

一般而言,数据类型分为值类型(Value type)和引用类型(Reference type)以及空类型(NULL).

值类型包括: int,double,float, struct,enum.

引用类型包括:object, class, array,interface,string,delegate.

计算机科学中定义指针为编程语言中的对象, 是一种复合数据类型, 属于引用类型.

关于值类型与引用类型的差别: (下图摘自http://www.cnblogs.com/zengming/p/5951351.html#3638389)



让你不再怕指针pdf

  • 2009年05月22日 13:38
  • 233KB
  • 下载

链式存储结构线性表

链式存储结构线性表 顺序表的问题: 1、顺序表的访问和修改的时间复杂度是常数级的,非常快。但是顺序表的插入和删除的缺不好,这两种操作的时间复杂读是O(N),看上去挺好,但是顺序表的插入和删除是通过大...
  • king_qg
  • king_qg
  • 2017-12-01 20:56:38
  • 84

C指针基本概念核心技术及最佳实践 完整书签版

  • 2017年09月15日 10:51
  • 24.2MB
  • 下载

计算机系统:核心概念及软硬件实现 PDF

  • 2016年04月06日 14:35
  • 22.04MB
  • 下载

C语言指针学习

  • 2012年12月11日 16:29
  • 265KB
  • 下载

关于“重定位”及其相关的几个概念

      重定位是多道程序设计中一个非常重要的概念,它是多道程序在内存中同时运行的基础。所谓重定位就是将逻辑地址空间变换(或称映射)为实际的物理地址空间,或者把某个相对地址变换(或映射)主存的绝对地...
  • collier
  • collier
  • 2010-08-26 21:13:00
  • 1226

c++内存模型------计算机系统核心概念及软硬件实现

c++编程语言有3中不同类项的变量:全局变量、局部变量和动态分配变量。变量的值存储在计算机的内存中,但是变量存储的方式取决于变量的类项。3种类型的变量分别对应存储器中3个特定的区域: 全局变量存...
  • li_haoren
  • li_haoren
  • 2017-10-23 23:53:49
  • 74

Service的概念与使用

概述: Service即服务,与Activity,ContentProvider,BroadcastReceiver并称Android程序的四大组件。 在程序后台运行,不可见,难以被Andro...
  • Coutel
  • Coutel
  • 2017-11-06 17:30:54
  • 154

JavaScript核心概念及实践

  • 2014年09月30日 16:11
  • 25.36MB
  • 下载

java多线程(一):多线程的基本概念和使用

转载自:http://blog.csdn.net/lonelyroamer/article/details/7948329 一、进程和线程的基础知识 1、进程和线程的概念 进程:...
  • u012179540
  • u012179540
  • 2014-12-17 20:30:42
  • 233
收藏助手
不良信息举报
您举报文章:C/C++指针概念及使用
举报原因:
原因补充:

(最多只允许输入30个字)