设为首页 加入收藏

TOP

C++学习指针一二事
2012-11-07 13:12:31 来源: 作者: 【 】 浏览:462
Tags:学习 指针 一二
    [cpp]
   
    #include<iostream>
   
    using namespace std;
   
    int main(void)
   
    {
   
    int *ptr;
   
    int value = 1;
   
    ptr = &value;
   
    int *p = ptr;
   
    cout 《 p 《 endl;
   
    /******************************************************************
   
    类比一下,指针比作信封     引用比作邮箱     值比作房子
   
    ok,我们在信封上面写上邮寄的地址(引用地址),  我们来取值就相当于地址
   
    对应的房子。我们也可以把信封上的地址涂掉,然后写上其他的我们想要的地址
   
    房子是在哪里不动的,所以不受影响。
   
    *******************************************************************/
   
    int *ptrs;//未初始化
   
    int *ptring = NULL;//NULL指针
   
    void *vptr;//void指针  未初始化
   
    int *iptr;
   
    int *vastptr;
   
    //void类型可以存储任意类型的指针或者引用
   
    iptr = &value;
   
    vptr = &value;
   
    cout 《 iptr 《 vptr 《 endl;
   
    //显示类型转换  把一个void指针转换成int指针,并取值。
   
    vastptr = static_cast<int*>(vptr);  //(int*)vptr;
   
    cout 《 *vastptr 《 endl;
   
    //cout 《 ptrs 《 ptring 《 endl;
   
    /********************************************************************
   
    数组是一断连续的内存空间,来存储多个特定类型的对象。
   
    指针用来存储单个内存地址
   
    所以数组和指针不是相同的结构,不能互相转换。
   
    数组变量是一个常量,就算指针变量指向相同的地址或者一个不同的数组,
   
    也不能把指针赋值给数组变量。
   
    我们可以把数组变量赋值给指针时,世界上把指向数组第一个元素的地址赋值给指针。
   
    要注意的是:指针需要和数组元素类型保持一致,除非指针是void类型。
   
    ********************************************************************/
   
    int myarray = {1, 2, 3, 0};
   
    int *ptrarray = myarray;//*ptrarray = &myarray[0];
   
    cout 《 *ptr 《 endl;
   
    //ok上面的操作时正确的。来看下面的错误
   
    //myarray = ptrarray;
   
    //myarray = myarrays;
   
    //myarray = &myarrays[0];
   
    /*******************************************************************
   
    结构体和指针。   与数组类似,指向结构体的指针存储了结构体第一个元素的
   
    内存地址。    结构体的指针必须声明和结构体类型保持一致 或者为void
   
    *******************************************************************/
   
    struct person{
   
    int age;
   
    char *name;
   
    };
   
    struct person first;
   
    struct person *ptrstruct;
   
    first.age = 22;
   
    char *fullname = “full name”;
   
    first.name = fullname;
   
    ptrstruct = &first;
   
    cout 《 first.age 《 ptrstruct->name 《 endl;
   
    return 0;
   
    }
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C++ 实现static const.. 下一篇HDOJ 4414 Finding&nbs..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: