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

变量内存

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;
}

程序运行不出来。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值