引用和指针小结

原创 2006年06月03日 16:03:00

引用 &

 

注意的2点:

1使用引用时,必须同时对它进行初始话,指向一个已经存在的对象

2 一旦一个引用被初始化,就不能改为指向其他的对象。(而指针可以改变指向)。

 

声明使用如下:

int   i ;

int   &j=i ;

这样就可以i , j 就可以互相等价了。

 

 

指针 *

 

声明使用如下:

int a,b;

int *pa,*pb=&b;  (pa,pb就是地址值)

pa=&a;

 

注意指针声明时和使用时,*代表不同的意义。

指针声明之后也要指向一特定值(初始化)才能使用。指针可以改变指向。

空指针:

int *p;

p=0;//不指向任何地址  (安全的方法)

-----------------------------------

转 常量指针和指针常量

const要注意的问题
  1、下面是一个几乎所有人刚开始都会搞错的问题:
已知:typedef char *cstring;
在以下声明中,cstr的类型是什么?
extern const cstring cstr;

错误答案:const char *cstr;
正确答案:char *const cstr;

  错误在于将typedef当作宏扩展。const 修饰cstr的类型。cstr是一个指针,因此,这个定义声明了cstr是一个指向字符的const指针。
  2、指针是const还是data为const?
辨别方法很简单,如下:

代码:
char *p="hello"; //non-const pointer, non-const data;
const char *p="hello"; // non-const pointer, const data;
char * const p="hello"; // const pointer , non-const data;
const char * const p="hello"; // const pointer, const data;


  要注意的是,"hello"的类型是const char * ,按C++standard规则,char *p="hello" 是非法的(右式的const char* 不能转换为左式的char *),违反了常量性。但是这种行为在C中实在太频繁,因此C++standard对于这种初始化动作给予豁免。尽管如此,还是尽量避免这种用法。
  3、const初始化的一些问题
const 对象必须被初始化:

代码:
const int *pi=new int; // 错误,没有初始化
const int *pi=new int(100); //正确
const int *pci=new const int[100]; //编译错误,无法初始化用new表达式创建的内置类型数组元素。

C51指针定义和应用小结

一. 指针变量的定义 指针变量定义与一般变量的定义类似,其形式如下: 数据类型 [存储器类型1] * [存储器类型2] 标识符; [存储器类型1] 表示被定义为基于存储器的指针,无此选项时,...
  • GoodShot
  • GoodShot
  • 2012年10月08日 14:34
  • 1481

指针学习总结(数组指针,指针数组)

指针是C语言的精髓,它可以直接操作内存地址,学会灵活运用指针将会非常方便。很多人碰到指针会犯迷糊,搞不懂指针到底是什么。     数据在内存中是怎样存储读取呢?比如定义一个变量,程序在编译时系统会给这...
  • wshngyf
  • wshngyf
  • 2015年03月18日 09:07
  • 275

《指针和引用小结》

指针和引用小结   对于指针,学C的时候以为自己理解了。最近看C++书才发现还有好多东西要学。由于C++引入了“引用”概念,这次就把自己的理解和书上的东西做一个小结。 对于指针,这是C语言中的一...
  • zhwangkaixuan
  • zhwangkaixuan
  • 2012年10月26日 21:57
  • 491

指针和引用的区别与相同点

原文地址:http://blog.csdn.net/will130/article/details/48730725 一、指针和引用的定义和性质区别: (1) 指针:指针是一个变量,只不过...
  • metheir
  • metheir
  • 2017年03月01日 12:10
  • 1591

C++中指针和引用的区别(超详细)

指针和引用主要有以下区别: 引用必须被初始化,但是不分配存储空间。指针不声明时初始化,在初始化的时候需要分配存储空间。 引用初始化后不能被改变,指针可以改变所指的对象。 不存在指向空值的...
  • weikangc
  • weikangc
  • 2015年11月10日 17:40
  • 984

C++引用详解及与指针异同点

一、引用详解 引用:就是对某一变量(或对象)取一个别名,对变量的引用 的操作与对变量本身直接操作完全一样。 引用的声明:类型标识符 &引用名=目标变量名;   如下:定义变量a的引用aa,即别名。  ...
  • ljheee
  • ljheee
  • 2016年08月12日 11:22
  • 1143

关于C++中指针和引用的速度

想写这篇博文的起因是某天突然有人问我,你知道C++中指针和引用有什么差别吗,我就按照我所以知道的叽里呱啦的讲了一堆(其实也就是随便拿本C++书都有说的那些),我讲完后对方得意地说你没讲到重点,重点是引...
  • soupcty
  • soupcty
  • 2010年11月06日 22:49
  • 385

深入理解C语言的指针*和引用&

首先是一道关于类型转换的面试题,要求给出float变量强制转换成int型和int &输出的结果。 int test() { float a = 1.0f; cout...
  • nevasun
  • nevasun
  • 2012年03月09日 10:46
  • 2076

函数返回值、引用和指针的区别思考

函数返回值、引用和指针的区别思考 收藏 学了引用、指针后,这些概念被教材拿去和函数搅在一起,于是使人感到很糊涂。涉及到函数返回的到底是值,引用还是指针的问题,其实就是函数返回的过程中和函数结束的过...
  • shangyaowei
  • shangyaowei
  • 2013年12月19日 20:30
  • 1552

java中的引用和C++中的指针的区别

1.类型:引用其值为地址的数据元素,java封装了的地址,可以转成字符串查看,长度可以不必关心。C++指针是一个装地址的变量,长度一般是计算机字长,可以认为是个int。2.所占内存: 引用声明时没有实...
  • b271737818
  • b271737818
  • 2009年02月24日 13:30
  • 8972
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:引用和指针小结
举报原因:
原因补充:

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