c语言指针结构体心得,C语言结构体指针陷阱
一、“.”和“->”区别:
当声明一个结构体时,因为自动分配了结构体的内存空间,所以可以直接用“.”访问相应结构体内的存储单元,比如:
typedef struct Node{
int value;
}node;
node o;
o.value=2;
但如果声明的是一个结构体指针,则需要手动开辟一个结构体内存后,将这个指针指向该内存块后,再使用“->”进行内部变量访问,同时 (*o).value 等价于 o->value。
node *o;
o->value=2;
二、指向结构体的指针必须初始化:
#include
typedef struct Node{
int value;
}node;
int main(){
node *o;
o->value=2;
printf("%d",o->value);
return0;
}
这段代码编译没问题,运行却出错,为什么呢?
定义了一个结构体指针o用来指向一个node结构体,但是你却没有给他赋值,系统只知道“o应该是一个node结构体内存单元的首地址”,但是地址是多少呢,还没有分配,所以此时o的值为NULL,*o指向的是一个空或者随机的内存空间,常说的“野指针”。所以p->a=1这句就会出错。 所以我们应该给o进行初始化,初始化有两种方式。
一种是malloc动态分配内存:
o=(node *)malloc(sizeof(node));
o->value=2;
另一种是将o指向一个已经存在的node结构体:
node r;
o = &r;
o->value=2;//因为o为指针,所以此时其实为r的value被赋值为2
Monkey&Penguin
发布了4 篇原创文章 · 获赞 0 · 访问量 63
私信
关注
标签:node,指向,int,value,C语言,陷阱,指针,结构
来源: https://blog.csdn.net/qq_40285768/article/details/104607834
c语言指针结构体心得,C语言结构体指针陷阱相关推荐
- c语言程序实践感受心得,C语言实践心得体会
C语言实践心得体会 在科技高度发展的今天,计算机在人们之中的作用越来越突出.而c语言作为一种计算机的语言,我们学习它,有助于我们更好的了解计算机,与计算机进行交流,因此,c语言的学习对我们尤其重要. ...
- c语言编程课程心得,c语言编程课程设计心得.docx
C语言编程课程设计心得 C语言编程课程设计心得 河南城建学院 <C语言程序设计>课程设计报告 适用专业工程管理专业课程名称C语言程序设计指导教师赵军民.魏新红.张芳芳 设计人:051409 ...
- C语言结构体里的成员数组和指针
单看这文章的标题,你可能会觉得好像没什么意思.你先别下这个结论,相信这篇文章会对你理解C语言有帮助.这篇文章产生的背景是在微博上,看到@Laruence同学出了一个关于C语言的题,微博链接.微博截图如 ...
- python中的记录指针_使用Python向C语言的链接库传递数组、结构体、指针类型的数据...
使用python向C语言的链接库传递数组.结构体.指针类型的数据 由于最近的项目频繁使用python调用同事的C语言代码,在调用过程中踩了很多坑,一点一点写出来供大家参考,我们仍然是使用ctypes来 ...
- python结构体数组传出接收c动态库_使用Python向C语言的链接库传递数组、结构体、指针类型的数据...
使用python向C语言的链接库传递数组.结构体.指针类型的数据 由于最近的项目频繁使用python调用同事的C语言代码,在调用过程中踩了很多坑,一点一点写出来供大家参考,我们仍然是使用ctypes来 ...
- C语言基础1:初识C语言(转义、注释;数组、操作符、反码、补码、static、define、指针、结构体常变量;局部变量;作用域、生命周期)
文章目录 C语言基础1:初识C语言 1.C语言简介 1.1什么是C语言 1.2C语言的发展 2.第一个C语言程序 2.1创建项目 2.2添加源文件 2.3写代码 3.数据类型 4.变量.常量 4.1定 ...
- go语言基础(二)函数,数组,指针,结构体
目录 函数 匿名函数 函数闭包的简单使用以及获取键盘输入 闭包加上函数多返回值 为什么闭包不会被垃圾回收 defer 内置函数panic.recover 语言变量作用域 数组 数组定义 数组+函数+宏 ...
- 初识C语言(1)(2)(3)(4) C语言入门 保姆级教程 变量 常量 字符串 转义字符 操作符 关键字 字符串 指针 函数 结构体 数组 选择语句 循环语句
一.如何写C语言代码 1.编译器 2.创建项目 3.创建源文件 4.写代码 5.编译+链接+运行 项目名字不要汉语,不要特殊字符,不要加空格,项目路径一般为你想要的路径 C语言中,一般创建.c源文件, ...
- C语言结构体的定义与使用、结构体数组、指向结构体的指针(有代码详解)
1.结构体的定义与使用 结构体是一种构造数据类型 把不同类型的数据组合成一个整体 结构体的定义形式: struct 结构体名{结构体所包含的变量或数组 }; 结构体是一种集合,它里面包含了多个变量或数 ...
最新文章
- 什么是UUID及其实现代码
- 新浪php面试题目,新浪php的面试题 收集
- 皮一皮:谁来解释下一无所有的字典含义?
- Linux脚本实战之猜数字
- 逻辑建模与物理建模_架构层和建模域逻辑
- 前端学习(1401):多人管理21新增用户
- python逻辑型数据也叫什么_Python入门 | 运算符和数据类型
- 计算与推断思维 十四、回归的推断
- Xcode新建View Controller Scene并实现界面间跳转的方法
- python爬取千图网高清图
- 前端开发需要学习的技术:
- 2017年数模国赛B题第一小题的思路过程(个人思路)
- CF1528B Kavi on Pairing Duty(dp)
- 基于java的高校运动会管理系统的设计与实现--毕业论文(可仅作参考)
- 我帮粉丝赚了10w+
- 小程序导航图标_商场寻店不迷路 业内首个小程序AR导航上线
- matplotlib中箱线图、极线图、阶梯图的绘制
- 打开了ros中的rviz,显示不了机器人模型
- 手机换android版本,安卓手机怎么换系统(最好能自己换)
- Realme GT ROOT 解锁BL教程