引用和指针小结

来源:互联网 发布:ipad pro绘画软件 编辑:程序博客网 时间:2024/05/01 17:17

引用 &

 

注意的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表达式创建的内置类型数组元素。

原创粉丝点击