C语言之指针的再次理解
C语言指针的一些理解
一, 再一次理解指针的缘由是在做数据结构的题目的时候无意中的这次程序的调试,见下图,程序运行没有问题,无意之下进行了调试,遇见了这个问题。(expression cannot be evaluated无法计算表达式的值)(更好的阅读体验,请移步我的个人博客)
二, 若是一下子看不出来为何,那就还是先从指针谈起吧
什么是指针呢?我的理解是指针是一个值,和普通变量没有区别,只是指针的值是一个地址,而普通变量的值是一些我们常见的类型如int,其实都是一样的。
比如说int a,int *p,这时候你将a的地址赋给p,那你就能通过p取到a的值。
注意,指针是有指向类型的,要时刻注意指针指向类型的内存空间大小和指针本身所占空间大小的区别,下图是个示例可以看出来区别:
三,那么既然知道了这两者有区别,下面使用malloc进行内存分配也就清楚了,看下图:(注意一下注释部分)
四, 当申请的为结构体变量时,结构体变量中又有指针时,会出现什么问题呢?看下图:
请注意,上图并非是错误,是调试过程中,编译器显示的各个变量的情况。这里申请的内存,由两部分组成,一是a,b的内存大小,二是指向结构体的一个指针!
请注意与下面这幅图的区别:一个申请的是结构体变量的空间,一个是指向结构体变量指针的空间:
五,那下面的这个,估计也就知道为何了:
六,不知道看完后的你收获了什么,文中有很多理解不足之处,欢迎指点,谢谢。
C语言之指针的再次理解相关推荐
- c语言两个指针相等,C语言之指针,便于理解
一.指针变量定义 C语言有两种变量: 其中变量(普通变量)存储内容值:地址变量(指针变量)存储地址值. 1.定义的格式: 类型名 *指针变量名: 如: int a,b,*p1,*p2: float x ...
- C语言的指针移动怎么理解
C Primer pkus(第五版)中文版,老外写的还是很经典的,推荐给朋友们,购买地址:C primer plus 5版中文版购买 另外再推荐本书: 程序员面试宝典(第5版)第五版:程序员面试宝典( ...
- c语言中*用于指针,关于C语言中指针的理解
关于c语言中指针的一些理解 这几天在看任哲老师编写的嵌入式实时操作系统uC/OS原理与应用一书,第二章讲到指针的用法,我发现自己有些地方有疑问,就重新看了关于c指针的知识.同时也对指针有了一定的理解. ...
- 理解C语言中指针的声明以及复杂声明的语法
昨天刚把<C程序设计语言>中"指针与数组"章节读完,终于把心中的疑惑彻底解开了.现在记录下我对指针声明的理解,顺便说下如何在C语言中创建复杂声明以及读懂复杂声明. 本文 ...
- C语言与Java怎么沟通_c语言初学指针,对于java面向对象的初理解
最近在看关于c语言的指针,学习下,发现指针原来运用理解成其实可以抽象出我们java的面向对象封装,地址--> 对象或变量,先看一段代码: public class Cat { public St ...
- c语言 指针 pdf,深入理解c指针 PDF扫描版[33MB]
深入理解C指针 内容简介: 深入理解C指针和内存管理,提升编程效率!这是一本实战型图书,通过它,读者可以掌握指针动态操控内存的机制.对数据结构的增强支持,以及访问硬件等技术.本书详细阐述了如何在数组. ...
- printf 指针地址_c语言对指针的理解
先来讲一下本人学指针的经历:大一的时候刚接触c语言对指针这东西真的是太迷了,感觉麻烦难懂不想其他语言一样.但是搞懂以后就被指针的魅力吸引甚至喜欢上c语言.不多讲,开始!(文章可能有些长,但放心全是基础 ...
- java c 面向对象比较教程_c语言初学指针,对于java面向对象的初理解
最近在看关于c语言的指针,学习下,发现指针原来运用理解成其实可以抽象出我们java的面向对象封装,地址--> 对象或变量,先看一段代码: public class Cat { public St ...
- 有关C语言指针的详细理解
在学习数据结构的过程中,在用到各种表的时候,经常离不开指针. 当初学习C语言的时候指针这块就理解的不够透彻,导致现在复习数据结构写相关代码还是用数组模拟来实现.如此一来,失去了真正学习数据结构的意义. ...
最新文章
- centos/linux扩容Swap分区
- java启动 守护进程_java守护进程启动和关闭脚本
- Linux添加新硬盘、分区、格式化、自动挂载
- 美团在Redis上踩过的一些坑-5.redis cluster遇到的一些问题
- ArcGIS Engine开发之旅09--几何对象和空间参考
- ASP.NETLinkButton的Click事件中获取CommandArgument的值
- 沃尔玛控股中国1号店
- 【带着canvas去流浪(6)】绘制雷达图
- linux下rocksdb的编译安装
- 【BZOJ1124】[POI2008]枪战Maf(基环树_构造)
- linux iconv命令详解,iconv命令
- Java完全参考手册_Java完全参考手册(第8版) ((美)Herbert Schildt) pdf扫描版
- 人人商城小程序微信支付配置
- 联想u盘启动linux,联想ThinkPad L540笔记本BIOS设置u盘启动教程
- Unity Shader-Decal贴花(SelfDecal,Alpha Blend,Mesh Decal,Projector,Deferred Decal)
- 电子设计(4)高电平、低电平复位电路
- 生产环境实战spark (5)分布式集群 5台设备之间hosts文件配置 ssh免密码登录
- Kylin接入外部Jdbc Mysql数据源
- tracepro应用实例详解_腾讯云服务器计费模式包年包月、按量计费和竞价实例选择建议...
- Flink实践 | 360 政企安全基于 Flink 的 PB 级数据即席查询实践