zoukankan      html  css  js  c++  java
  • 指针,取地址运算符(&),malloc和new

    取地址运算符(&)

    定义:(&p)则是这样一种运算,返回一个指针,该指针的值是当时声明p 时开辟的地址,指针的类型是p的类型对应的指针类型。(对,&得到的地址指针是有类型的

    例如:

    int a=1;

    double *p=&a;

    编译时会报错:“ warning C4133: “初始化”: 从“int *”到“double *”的类型不兼容”,需要强制类型转换

    从上面也可以知道,&可以将数据转换成指针   int* p=&a;

    指针的初始化

    struct node//定义一个节点的结构
    {
        int data;
        struct node* left;
        struct node* right;
    };

    比如声明一个结构体指针node* p

    我要把这个指针指向NULL(也就是初始化这个指针)

    如果直接  p=NULL     //这样使用时是会有错误的,会有提示:访问权限冲突,p是nullptr

    正确的初始化是 node* p=new node;    //p的值为new返回的内存地址,大小是node的大小,但该地址的对应的值不确定。

    p=NULL;

    也可以这样:node* p=(struct node*)malloc(sizeof(struct node));

    p=NULL;

    上面两种方式都是给这个指针分配内存,在初始化指针为空,p=NULL

    也可以先什么数据,在用&转换成指针

    node t;

    node *p=&t;

    new的用法

    1、int* p = new int;  //给p分配了地址,但是还没有内容

    2、int* p = new int(520); //有地址也有内容

    nullptr

    C++ 11新增的,为了区分NULL和 0,在c++把NULL和0视为同一种东西

    free()

    释放内存空间的函数,通常与申请内存空间的函数malloc()结合使用,可以释放由 malloc()、calloc()、realloc() 等函数申请的内存空间。

  • 相关阅读:
    南阳理工ACM1076--方案数量
    南阳理工oj88--汉诺塔(一)
    杭电ACM1170--Balloon Comes!
    杭电ACM2011-- 多项式求和
    杭电ACM2080--夹角有多大II
    杭电ACM2076--夹角有多大(题目已修改,注意读题)
    请!继续!
    南阳理工ACM954--N!
    南阳理工ACM975--关于521
    致自己即将到来的人生
  • 原文地址:https://www.cnblogs.com/-citywall123/p/12586442.html
Copyright © 2011-2022 走看看