结构体变量与结构体指针的区别

本文探讨了C++中结构体变量与结构体指针的区别和关系。结构体变量直接存储成员值,不需要new分配内存,而结构体指针存储的是结构体变量的地址,用于指向结构体。通过示例代码展示了如何操作结构体指针,并强调了动态内存分配在链表中的重要性。
摘要由CSDN通过智能技术生成

A.对于结构体变量(即代码中Lnode类型),本身作为一个变量,就像是int a中的a变量,本身是具有内存空间的,该内存空间是用于存放该结构体成员的数值的。因此区别于结构体指针,结构体变量是不需要new申请内存空间的,可以直接用。

B.对于结构体指针(即代码中的LNODE类型),本身是作为一个指针,就像int *p中的p。首先作为指针变量,本身也是具有内存空间的,该内存空间是用于存放地址的。之所以能成为结构体指针是因为该指针是用于指向结构体变量的首地址的,结构体指针本身是不能存放结构体成员数值的。所以不能直接cin >> p->data。

C.对于二者关系,结构体指针可以指向结构体变量,如果没有结构体变量,则将结构体指针作为中介,new申请一段内存空间作为结构体变量并同时由结构体指针指向该变量。换句话说,在不用new申请空间的条件下,定义一定数量的结构体变量也是可以构成“链表”的,但是这就导致“链表”的长度是有限的,但是数据结构中链表之所以是链表是因为其可以动态申请内存空间,操作系统允许下可以无限制的加长链表

下面是个人部分调试代码以作佐证

#include<bits/stdc++.h>
using namespace std;

typedef struct node{
	int data;
	struct node *next;
}Lnode,*LNODE;

int main(){
	
	Lnode head , ppp;
	head.data = 3;
	head.next = &ppp;
	printf("A%d %d\n",head.data,head.next);
	
	LNODE p;
//	p = new Lnode;
	cin >> p->data;
	printf("p%d\n",p->data);

	
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值