当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++基础入门教程

C++中指针的使用艺术

  在C++编程中使用指针能有速度快,节约内存等优点,是很多C++程序员的最爱。但指针是一把双刃剑,用好了它,你就会发现指针有多么的方便,反之,你可能就头疼了,往往会出现意想不到的问题。
 
  一。什么是指针:
 
  其实指针就像是其它变量一样,所不同的是一般的变量包含的是实际的真实的数据,而指针只是一个指示器,它告诉程序在内存的哪块区域可以找到数据。
 
  这是一个非常重要的概念,有很多程序和算法都是围绕指针设计的,如链表、遍历等。
 
  指针是一个数据类型,本身也需要占用四个字节的存储空间。所以用sizeof(void*)获得的值为4.
 
  二。指针的定义
 
  看如下的例子:
 
  int *pNumber;
 
  这样就定义了int类型的指针。
 
  指针变量名称以p为首字符,这是程序员通常在定义指针时的一个习惯,以提高便程序的阅读性,表示这是个指针。另外,虽然int* pNumber和int *pNumber是相同的,但是使用后一种的编程风格更好一些。比如:
 
  int *pNumber1,*pNumber2;表示定义两个指针,*号和变量靠近;反之,我们可能会定义成int* pNumber1,pNumber2,这将是一个错误的定义,pNumber2就不是指针了。
 
  三。指针的优点
 
  a.为函数提供修改调用变元的手段;
 
  b.支持C++动态分配子程序
 
  c.可以改善某些子程序的效率
 
  d.为动态数据结构(如二叉树、链表)提供支持
 
  四、指针赋值及转换:
 
  a.同类型直接赋值,异类型要进行转换。
 
  b.强制转换:可以把表达式结果硬性转换为指定类型
 
  c.char * p;(int *)p 把p强制转换为int型,记住转换过程中要注意两个类型的大小,大转小时可能会有数据丢失(如int到double)
 
  d.涉及void *的:
 
  c 中void *类型可赋值给任何类型的指针,反之亦然
 
  c++ 中都需要强制转换
 
  void * 可看作无穷大能接纳任何类型赋值,反之不行int * p =9;void * t= p(正确);p=t(错误)
 
  e.不涉及void *的都要强制转换
 
  五。指针和数组
 
  不带下标的数组名返回数组的起始地址,即数组首元素的地址,所以对数组的访问可有两种方式:数组下标和指针算术。例如:
 
  char* pChar;
 
  char chs[100];
 
  pChar = chs;这样pChar就指向chs数组的首地址。
 
  六。数组与引用
 

共2页 首页 上一页 1 2 下一页 尾页 跳转到
相关内容
赞助商链接