qq_43412960 2019-12-21 15:12 采纳率: 78.6%
浏览 196
已结题

这是一个关于数据结构的链表指针赋地址值问题


#include<iostream>
#include<conio.h>
#include<string.h>
#define OK 1
#define MAXSIZE 100
using namespace std;
typedef  int Status;

typedef  struct  
{
char name[5];
float price;    
}Book;

typedef Book ElemType;

typedef  struct LNode
{
ElemType data;
struct LNode *next;


}LNode,*LinkList;
LNode *A;


Status InitList(LNode *L)
{
L=new LNode;
if(!L)
exit(-1);
else
(*L).next=NULL;
return OK;
}

int main()
{
LNode *L;

InitList(L);

cout<<(*L).next;
//下面三行是测试代码,同样给指针赋值为NULL,测试结果,当屏蔽上面代
//码的时候发现,可以出现值。不屏蔽的话,则溢出,执行cout<<(*L).next溢出

int *a;
a=NULL;
cout<<a;




getch();


return 0;
}

给链表结点初始化,给next指针赋值为NULL,并输出next指针地址,运行后程序溢出。
我为了探究原因,设计了指针A给A指针赋值NULL,单处运行测试语句,
程序并没有溢出,并且显示出了一个值。
为什么呢,都是赋值NULL,都是输出指针,区别为啥这么大?

  • 写回答

1条回答

  • threenewbee 2019-12-21 17:23
    关注
    #include<iostream>
    #include<conio.h>
    #include<string.h>
    #define OK 1
    #define MAXSIZE 100
    using namespace std;
    typedef  int Status;
    
    typedef  struct  
    {
    char name[5];
    float price;    
    }Book;
    
    typedef Book ElemType;
    
    typedef  struct LNode
    {
    ElemType data;
    struct LNode *next;
    
    
    }LNode,*LinkList;
    LNode *A;
    
    
    Status InitList(LNode **L)
    {
    *L=new LNode;
    if(!(*L))
    exit(-1);
    else
    (*L)->next=NULL;
    return OK;
    }
    
    int main()
    {
    LNode *L;
    InitList(&L);
    cout<<(*L).next;
    //下面三行是测试代码,同样给指针赋值为NULL,测试结果,当屏蔽上面代
    //码的时候发现,可以出现值。不屏蔽的话,则溢出,执行cout<<(*L).next溢出
    
    int *a;
    a=NULL;
    cout<<a;
    getch();
    return 0;
    }
    
    

    指针的指针作为参数才能修改指针。指针作为参数只能修改值

    评论

报告相同问题?

悬赏问题

  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能