指针,取地址运算符(&),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() 等函数申请的内存空间。

原文链接: https://www.cnblogs.com/-citywall123/p/12586442.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    指针,取地址运算符(&),malloc和new

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/338327

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月1日 下午11:33
下一篇 2023年3月1日 下午11:34

相关推荐