c 指针类型介绍-凯发app官方网站

凯发app官方网站-凯发k8官网下载客户端中心 | | 凯发app官方网站-凯发k8官网下载客户端中心
  • 博客访问: 30211
  • 博文数量: 7
  • 博客积分: 290
  • 博客等级: 二等列兵
  • 技术积分: 85
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-08 14:29
文章分类

(7)

  • (1)
  • (2)
  • (4)
  • (0)
  • (0)
文章存档

(7)

我的朋友
最近访客
相关博文
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·

分类: bsd

2010-09-08 15:39:05

指针类型:
    1 int i;                    //定义一个int型的变量
    2 int *p;                   //定义一个指向int的指针
    3 int a[n];                 //定义一个数组
    4 int *p[n];                //定义一个指针数组
    5 int (*p)[n];              //定义一个数组指针
    6 int f();                  //声明一个返回值为int的函数
    7 int *p();                 //声明一个返回值为int*的函数
    8 int (*p)();               //定义一个函数指针
    9 int **p;                  //定义一个指向int的指针的指针

从语法上看,你只须把指针声明语句中的指针名字和名字左边的指针声明符*去掉,剩下的就是指针所指向的类型。
 
引用运算符:
    1.引用只是变量的别名,而不是指向变量的指针(区别于取址运算符"&")不占内存空间,对变量引用的改变其相应的变量也会改变。
    2.不能对引用使用指针间接运算符“*”进行复引用操作
    3.引用必须在声明时初始化 int &c = count;(c是count的别名)
   
指针的算术操作
    和整数的加法,减法,自身的增量、减量
    指针增量后指向下一个与指针基类同型的元素,增减单位是所指类型的长度。
   
同类型直接赋值,异类型要进行转换
    强制转换:可以把表达式结果硬性转换为指定类型
    char * p;(int *)p 把p强制转换为int型,记住转换过程中要注意两个类型的大小,大转小时可能会有数据丢失(如int到double)
   
涉及void *的:
    c 中void *类型可赋值给任何类型的指针,反之亦然
    c 中都需要强制转换
    void * 可似为无穷大能接纳任何类型赋值,反之不行int * p =9;void * t= p(正确);p=t(错误)
   
const 是“最靠近”为原则
    指向整数常量的指针:const int * p;它所指向的值只读不能被修改 *p = 4(错误),p = 5(正确)
    指向一个整数的常量指针:int * const p;不允许修改指针变量的值,*p = 5 (正确),p = 5 (错误)
 
指针优点:
    1.为函数提供修改调用变元的手段;
    2.支持c 动态分配子程序
    3.可以改善某些子程序的效率
    4.为动态数据结构(如二叉树、链表)提供支持
    注:指针为程序引入了一层间接性,可以操控指针而不直接操控对象。
    1.可操控指针内含的地址也可操控指针所指的对象2.指针可能并不指向任何对象,写*pi时,可能会使程序在执行期错误,如寻址到某个对象,则提领操作,不指向任何对象,会出错,所以在提领前先确定它的确指向某对象。
    一个未指向任何对象的指针,内含地址为0,有时称为null指针,assert (p != 0)可检测是否分配成功。也可用if (pi),只有在pi含非零值时,才为true.

引用和指针的比较:
    (1)引用在创建的同时必须初始化,即引用到一个有效的对象;而指针在定义的时候不必初始化,可以在定义后面的任何地方重新赋值。
    (2)不存在null引用,引用必须与合法的存储单元关联;而指针则可以是null.
    (3)引用一旦被初始化为指向一个对象,它就不能被改变为另一个对象的引用;而指针在任何时候都可以改变为指向另一个对象。给引用赋值并不是改变它和原始对象的绑定关系。
    (4)引用的创建和销毁并不会调用类的拷贝构造函数
    (5)在语言层面,引用的用法和对象一样;在二进制层面,引用一般都是通过指针来实现的,只不过编译器帮我们完成了转换。
    总的来说:引用既具有指针的效率,又具有变量使用的方便性和直观性。
阅读(782) | 评论(0) | 转发(0) |
0

上一篇:

下一篇:

给主人留下些什么吧!~~
")); function link(t){ var href= $(t).attr('href'); href ="?url=" encodeuricomponent(location.href); $(t).attr('href',href); //setcookie("returnouturl", location.href, 60, "/"); }
网站地图