码迷,mamicode.com
首页 > 编程语言 > 详细

C++学习笔记(五)--指针、NULL、引用

时间:2016-07-20 22:41:00      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:

1. C++中已经定义了NULL为0:#define NULL 0
指针p可以指向空值NULL即 p = NULL;表示该指针变量不指向任何变量。

  注意:指针未初始化与指针为NULL不同,
  p = NULL;是有值的,为0;
  而在定义时:int *p;这时候碎虽然未对p初始化,但不代表p无值,而是此时的值是一个无法预料的值,p可以指向任何一个 未指定的单元,这是非常危险的,所以在引用指针变量之前必须对其初始化。

任何指针变量都可以与NULL做 = 与 != 比较;


补充知识:

2.两个指针指向同一个数组可以比大小,指向前面元素的指针变量小于指向后面元素的指针变量。

3.对不同类型的指针赋值要强制转化:
  int *p1;
  char *p2;
  float *p3
  p1 = (int *)p2;
  p2 = (char *)p3;

4.引用:为变量起一个别名,不适用于指针和数组。
  int a;
  int &b = a;/*表示b就是a,占用同一存储单元,只是名字不一样而已,即b具有a的地址,在声明引用时,必须同时初始化,b这个别名被使用后,不可在作为别的变量的名称。如 int &b = c; */

  引用可以作为函数参数,当实参传递给形参时,就相当于为变量起了一个别名,在被调函数中,变量的别名的值别改变了,则函数外部对应的原变量也改变了,因为它们使用同一存储空间,使用同一地址,这弥补了C中函数参数只传值的不足(传指针也是传指针
的值)。
#include<iostream>
using namespace std;

int main(){

  void swap( int & , int & );//&是引用,不是取地址
  int i = 1, j = 2;
  swap( i,j );
  cout <<"i=" <<i <<endl <<"j=" <<j <<endl;
  return 0;
}

void swap( int &a, int &b ){ /*调用到次函数时,实际上是把i的地址赋给a,j的地址赋给b,这时候a,b分别是i,j的别名,当函数内部的值改变了,自然而然的外部的值也改变了 ==》这就是 地址传递方式《==*/

  int temp;
  temp = a;
  a = b;
  b = temp;
}
  注意和指针区别:指针是要单独开辟内存空间来声明指针变量的,而引用不用。

  引用可以代替指针完成很多工作。

C++学习笔记(五)--指针、NULL、引用

标签:

原文地址:http://www.cnblogs.com/ysys/p/5689824.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!