北海-叶明的专栏

叶明珠 叶孤诚 叶来香 之联合博客

指针与引用

1)      指针的声明/定义

int* pA, pB, pC; 只有pA是指针,其他两个是int

如果想这样写,可以用typedef int* IntPointer

IntPoint pA, pB, pC;

 

2)      void指针的用法

void* 使得类型信息丢了,如果转型出错,会使得程序出错或崩溃。尽量少用。

没有void引用,因为它是无类型的,无法直接访问数据。

void 一般用在函数返回值和函数参数(void指针)上。

 

3)      const 指针

l       指向的内容是const

以下两者写法皆可:

const int* a;

int const* a;

l       指针本身是const

int* const a;

l       两者都是const

以下两种写法皆可:

int const* const a;

const int* const a;

 

4)      const 字符串陷阱

char* p = “hello”; //这时,”hello”是常量,p指针是一个指向常量的指针

所以,严格的写法应该是 const char* p = “hello”

 

如果,p[0] = ‘a’;则程序运行崩溃,因为试图去更改常量区,行为是未定义的。

 

如果想要改变一个数组,需要这样定义:

char p[] = “hello”; //注意 char [] p = “hello”是错误的!

“hello”将保存在全局静态区,而不是常量区,p指向首地址。

 

5)      引用

l       引用的作用像常量型指针,它是运算符重载的基础

比如,定义两个对象相加

Integer& operator + (Integer& left, Integer& right)

 

Integer a, b, c;

c = a + b;

如果没有引用,为了提高效率用指针,相当的晦涩且语义也不明确

l       引用声明时必须初始化且只能初始化一次且不能为NULL,这是与指针的一个区别

l       const 引用

以下是错误的:

int& a = 1;

因为1是常量,如果可以指向一个常量,那么就可以改变它了。

这样才是对的,const int& a = 1;

 

阅读更多
文章标签: integer null
个人分类: C++必知必会
想对作者说点什么? 我来说一句

抽象类指针引用.rar

2008年10月21日 583KB 下载

delphi指针大全

2015年05月04日 70KB 下载

引用指针

2012年10月30日 577B 下载

c++中指针引用的区别

2009年02月18日 14KB 下载

DELPHI指针使用

2011年06月22日 109KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭