函数后 变量内存文件以及空指针的问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_39642794/article/details/81590746

变量内存

type fun(**)

{

struct node p;

p=new strucrt node;

}

局部变量是在栈上,函数结束,自动释放。

开辟内存在堆上存储,函数结束时,不会自动释放,必须手动释放。

所以 p的地址会被释放。new struct node 不会。

附加,new 建立 delete 删除 而且函数是c++里面的

         malloc 建立 必须用 free 释放 c语言里面的

问题二:

p=NULL ,p->next =NULL

C/C++中,遍历到最后一个节点时,p->next == NULL,但是 p->data,即数据域里还是有数值的,所以此时 p! =NULL

 这是习惯写法。一般都把NULL定义成(void *)0,如果直接p=0;编译器会告警,说把一个整型赋给一个指针型。

2. NULL一般都用于表示空指针,p=NULL就表示把p指向一个无效空间地址
3. p指向NULL的无效空间地址后,对这个地址赋值就是非法的。只有把p指向一个有效地址空间才可以对它指向的内存写入内容,即可执行*p=XX操作.

#include<stdio.h>
struct node
{
    int a;
    struct node *next;
};
int main()
{
    struct node *p;
    p=NULL;
    if(p->next==NULL)
    printf("1");
    else
    printf("2");
    return 0;
}

程序运行不出来。

猜你喜欢

转载自blog.csdn.net/qq_39642794/article/details/81590746