c语言中定义结构体指针并指向一片内存空间和直接定义一个结构体变量的区别 Node *p=(Node *)malloc(sizeof(Node)); 和 Node p 两个有什么区别??? Node是一
(来自百度解答)
Node *p是定义一个Node结构体指针,指针名为p,指向一个Node结构体,并为这个结构体分配了内存空间
该结构体无命名
Node p是定义一个Node结构体,结构体名为p。
- 追问:
- 那两个的用法有什么区别???在内存中分别是怎么存储的???
- 回答:
-
结构体指针本质上是指向一个结构体
使用如下例
struct Node{int i;char c;}
Node *P1;
Node P2;
P1->i;
p2.c;
假如该结构体有两个属性 int i;char c;
使用时结构体变量p2直接用点操作符如p2.c;
使用结构体指针p1时用->操作符如P1->i;->操作符即为调用指针指向的变量
内存中结构体分配在一段内存地址上,起始地址为结构体指针的值
如Node *p=(Node *)malloc(sizeof(Node));此时p的值即为Node变量在内存中的起始地址
若用Node p声明结构体变量则会随机的在内存中利用剩余空间分配 此时起始地址不可知
一般编译器会预留一段内存地址以便创建变量
两种声明分配的内存空间大小相等
- 追问:
- 是不是malloc在堆中开辟空间,而Node p则直接在栈中开辟空间???
- 回答:
-
可以这么理解
c语言中定义结构体指针并指向一片内存空间和直接定义一个结构体变量的区别 Node *p=(Node *)malloc(sizeof(Node)); 和 Node p 两个有什么区别??? Node是一相关推荐
- C语言结构体指针(指向结构体的指针)详解
当一个指针变量指向结构体时,我们就称它为结构体指针.C语言结构体指针的定义形式一般为: struct 结构体名 *变量名; 下面是一个定义结构体指针的实例: //结构体 struct stu{ cha ...
- 从编译器角度分析C语言中数组名和指针的区别
从编译器角度分析C语言中数组名和指针的区别 数组名和指针是两个往往很容易让人们混淆的概念,很多人以为数组名就是一个指针,也有很多人知道数组名不同于指针但是仅知道数组名的值不能像指针一样改变. 例如你可 ...
- c语言的各种类型的指针,简单总结C语言中各种类型的指针的概念
2016 这篇文章主要简单总结了C语言中各种类型的指针的概念,指针可以说是C语言本身所具有的最大特性,平时根据不同使用场合习惯地将其简单分类,需要的朋友可以参考下 C语言中有很多关于指针的使用,指针也 ...
- c语言指针转换成数组,浅议C语言中灵魂数组和指针的互操作(转)
浅议C语言中灵魂数组和指针的互操作(转)[@more@]曾听好多朋友说,C是一种怀旧的语言,因为它的历史很久远,然而自从各种面向对象的编程语言的相续出现让它的影响力日减. 当然了,这是无可非议的,但是 ...
- [转]C/C++语言中值传递、指针传递和引用传递
在C/C++语言中值传递.指针传递和引用传递(C++ only)这三种函数参数传递方式是比较基本的知识,用的比较普遍,但不仔细分析其实质的话,时间长容易记混了.网上的资料也较多但多数都不系统,本文力求 ...
- 指针数组下标JAVA_Java语言中可用下标和指针两种方式表示数组元素。
[判断题]一行可以写多条预处理命令 [判断题]如果一个java程序中有多个类,编译后只生成一个字节码文件,其名字同主类名一致. [判断题]Protected类型的实例变量只能在本类中使用,其他类中不可 ...
- Android For JNI(二)——C语言中的数据类型,输出,输入函数以及操作内存地址,内存修改器
Android For JNI(二)--C语言中的数据类型,输出,输入函数以及操作内存地址,内存修改器 当我们把Hello World写完之后,我们就可以迈入C的大门了,今天就来讲讲基本的一些数据类型 ...
- python 结构体指针_C语言结构体指针(指向结构体的指针)详解
当一个指针变量指向结构体时,我们就称它为C语言结构体指针的定义形式一般为: struct 结构体名 *变量名; 下面是一个定义结构体指针的实例: //结构体 struct stu{ char *nam ...
- C语言中数组名和指针的区别
1: 指针是一个变量,而数组名不是.数组名是数组的首地址,即它本身就是一个地址. 2:假设a是一个数组名,而p是一个指针,当你使用 a 和 &a 时,得到值是一样的,都是数组的起始地址.而使用 ...
最新文章
- Cocos2d-x学习笔记(三十)之 游戏存档
- 宝塔linux计划任务ftp,宝塔面板定时备份网站及数据库至FTP存储空间图文教程
- 明机器人孔尧是哪里人_明我创始人孔尧:未来办公,始于聚点
- 数字图像处理7:图像增强之灰度变换
- Flask实例教程四
- python画折线图详解-python绘制简单折线图代码示例
- 简单,为什么要复杂和妥协?
- Hybris Commerce的 Master Tenant和Netweaver的System Client
- python 字符串总结
- 订阅号微信公众号历史文章爬虫php,一步步教你怎么打造微信公众号历史文章爬虫...
- Facebook广告营销的6个方法经验分享
- JPanle组件按钮 表格布局
- 使用电子签章确立电子劳动合同的法律效力
- solr面试题_查看您的Solr缓存大小:Eclipse Memory Analyzer
- ubuntu安装原生迅雷,让下载成为简单
- 小白福利-手把手教你如何重新安装你的系统
- 飞利浦净化器还能走多远
- 网安学习(二十五)HTTP协议、HTTS、邮件协议
- 中国历史和世界史横向对照表,收藏了长知识。 ​​​​
- 淘系自研前端研发工具 AppWorks 正式发布
热门文章
- web前端需要学习什么?这5点很重要
- word将乱序文档编成顺序 去掉自动编号保留序号为字符串
- linux 部署调用SAP接口
- 2015年1月微软MVP申请开始啦!
- Wallpaper壁纸提取得到tex文件,tex文件转图像,tex文件转png,tex文件提取壁纸,Wallpaper壁纸提取无法得到图像文件,RePKG-GUI提取得到tex文件而不是图像的解决方法
- R 实战综合指数评价法示例教程
- 客户分群基于聚类方法:KMeans以及GMM(Gaussian Mixture Model )
- C1000K安装、并发测试
- python数据分析及可视化(二十)Power BI的可视化制作以及A股上市公司数据分析
- C++ ARX二次开发视图、视口、UCS