C++指针学习

*    在看指针的时候最好是从右往左看;


1.什么是指针:
            指针就是地址,地址就是指针;
            一个变量的指针包含两个方面的含义:
                            1.以储存单元编号表示的地址;
                            2.指向的存储单元的数据类型(int , double , char , float),即基类型;
例子:
             string s("hello word");
             string *sp = &s;  //sp holds the address of s;
第二条语句是定义了一个指向string 类型的指针sp,并初始化sp使其指向string 类型的对象s;

    "&"是取地址符( address of);
     "*"是解引用符;
       在VisualC++当上,每一个指针变量分配4个字节的存储空间。对指针变量必需将他定义为指针类型。

    例子:
                Int i, j;   //定义整形变量i,j;
                Int * Pointer_4;     //定义指针类型pointer_4;
第二行当中的Int是: 所定义的指针变量是指向整数数据指针变量;pointer_4当中只能存放int类型(整数变量或是整型数组元素)的地址;不能存储其他类型的地址;
             int是这个指针的基类型;Pointer_4的基类型是int型;


            ***** 指针变量的基类型就是该指针变量指向的变量的类型;
指针变量的一般形式为:

                 基类型 * 指针变量名;
在变量名前加一个:“*”表示该变量是指针变量;
*在定义指针变量时必需指定指针的类型;




2.指针的定义与初始化:
        (1).指针的定义:
                         每个指针都有一个与之关联的数据类型,该数据类型决定了指针所指向的对象的类型;
如:
             一个Int型的指针只能指向int对象;

vector(int)            *pvec ;          //pvctor cna point to a vector<int>;
int                         *ip1, *ip2  //ip1 and ip2 can point to can int;
string                   *pstring  ;     // pstring can point to a string;
double                 *dp ;             //dp can point to a double ;


       (2).指针可能取的值:
                            1.保存一个特定对象的地址;
                            2.指向某对象的后面的另一个对象;
                            3.指针的值为0;当指针的值为0时,表明这个指针不指向任何一个对象;


        (3).指针的初始化:
                    1.未初始化的指针有哪些特点:
                                 未初始化的指针就如未初始化的变量一样,它会使程序崩溃;
                     如果可能的话,除非所指向的对象已经存在,否则不要先定义指针,这样可避免定义一个未初始化的的指针。
                    如果必需分开定义指针和其所指向的对象,则将指针初始化为0,因为编译器可检测出0值的指针,程序可判断该指针并未指向一个对象;


                        指针初始化和赋值操作的约束:
                                1.0值常量表达式;在编译时可获得0值的整数const对象或字面值常量0;
                                2.类型匹配的对象的地址;
                                3.另一个对象之后的下一地址;
                                4.同类型的另一个有效指针;



void *指针:
                void*指针表明该指针与一个地址相关,但是不清楚储存在此地上的对象的类型;
void支持的有限类型:
                1.与另一个指针进行比较;向函数传递void*指针或从函数返回void*指针;给另一个void指针赋值;不允许使用void*指针操纵它所指向的对象;

                



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值