目录

前言

一、内存

二、指针


前言

本篇文章旨在向初学者通俗易懂的介绍指针,我大学的时候刚学C语言就是从指针开始迷惑,以至于后面老师讲课都迷迷糊糊的差点丢失了学习的兴趣。所以在这里我想告诉大家作为初学者不要深究过多内容,这时候做到能初步理解并且拿到一段代码后能看懂这是指针,会简单地运用即可,复杂的东西后面会讲到。


一、内存

提起指针必然不能避免要先学习内存,内存其实就是我们电脑里的存储器,在内存之上还有读写速度更快的寄存器(register)等等,这里不过多赘述,怕大家越看越晕,这篇文章主要是讲指针的,如果大家感兴趣的话可以给我留言,我再专门开一篇介绍一下内存。

内存是电脑上特别重要的存储器,计算机中所有程序的运行都是在内存中进行的 。 所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节(1byte)。 为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址。

可以理解为你现在住在安徽大学的桔园宿舍楼,那么这整栋楼就是一个内存空间,每一间寝室就是被划分成一个个字节的内存单元,你的朋友要去你宿舍找你,这时候要是每个宿舍都没有门牌号的话找起来就很麻烦,所以就需要给每个宿舍一个门牌号,比如你住在3522寝室那么这就是你的地址,需要找到你就很方便了。


二、指针

指针顾名思义就是指向变量地址的针。你的朋友去你的宿舍桔园3522找你,那么3522就是地址,你的朋友就是指针。只要是变量就有地址,就像只要是宿舍就有房间号一样,这样方便计算机存储和查询。

至于地址如何存储

int nigoal=520;
int *p;//这时候的p就是一个指针变量
p=&nigoal;//&的意思是取地址

这里还有一个需要介绍的就是解引用操作符*

int nigoal=520;
int *p;
p=&nigoal;
*p=250;

*p=250;//这里的*就是解引用,前面的int*p定义了一个指针变量p,这里*p可以理解为令这个指针变量直接变成与变量等价,也就是说*p等价于nigoal。

前面说过sizeof函数,在这里我们可以用它测量一下指针变量的大小

由此我们可以看出指针变量的大小与其指向的数据类型无关,是统一的,在32位平台下都是4个字节,在64位平台下是8个字节。

这里给出这样一个程序帮助大家理解

#include<stdio.h>
int main()
{int nigoal = 520;int* p = &nigoal;*p = 250;printf("%d",nigoal);printf("%d",*p);return 0;
}

我们按f10让程序调试起来,可以看到变量nigoal的地址是0x0098f888,这里注意计算机中的地址一般都是按十六进制数字表示的,千万别记混成二进制数。

还有一个要注意的小点就是,32位电脑下会给我们变量分配四个字节的地址,此时一个指针只能指向一个字节,这个字节就是这四个字节中最底层最小的那一个。

和阿倪一起学习C语言(4),指针学习入门篇,通俗易懂介绍指针相关推荐

  1. 学习C语言,要从入门到精通

    1.学习C语言,要从入门到精通,需要读哪些书(从简单的到难的排序,越详细越好,最好都能注释下选择这本书的理由)?  入门阶段:还是老谭那本.  ..理由:虽然不能说它写得有多好,但是你现在要做的是入门 ...

  2. 学习c语言好书推荐——学习c语言的7本书

    下面给大家介绍7本书,如果不知道哪本适合自己,可以百度了解一下! C primer plus C primer plus作为一本被人推崇备至的c入门经典,C primer plus绝非浪得虚名.应该算 ...

  3. 深度强化学习(DRL)一:入门篇

    目录 前言 一.强化学习(RL)的基本概念 二.主要强化学习算法 2.1 Qlearning 2.2 Deep-Qlearning 2.3 Double-DQN 2.4 Sarsa 2.5 Sarsa ...

  4. soap soapenv区别_soap学习笔记(二)-----soap入门篇

    SOAP的全称是Simple Object Access Protocol,即简单对象访问协议.简单地说,SOAP是一种有线协议,类似于CORBA的IIOP.DCOM的ORPC或Java远程方法调用的 ...

  5. python怎么学习一门语言_如何学习Python这一门语言

    Python现在非常火,语法简单而且功能强大,很多同学都想学Python! 如果你选择了自学,我想给你提几点建议: 找浅显易懂,例程比较好的教程,从头到尾看下去.不要看很多本,专注于一本.把里面的例程 ...

  6. 电脑语言java,零基础学习电脑语言;Java学习路线!

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 万事开头难,即使你年纪大了些,但是只要你想学:那就能学好! 自学编程建议从C语言学起,可以说60%~80%的程序员都是从C语言开始的. 编程语言分为结构化 ...

  7. 新手学习c语言的方法,学习C语言方法“新手必看”

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 1.多看代码 在有一定基础以后一定要多看别人的代码. 注意代码中的算法和数据结构. 毕竟学C之后的关口就是算法和数据结构.提到数据结构,指针是其中重要的一 ...

  8. [从零开始学习FPGA编程-9]:快速入门篇 - 操作步骤2-1- 硬件电路图形化描述与文本硬件描述语言Verilog HDL与VHDL语言以及比较

    作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客 本文网址:https://blog.csdn.net/HiWangWenBing/article/detai ...

  9. PHP学习总结(2)——PHP入门篇之PHP代码标识

    认识PHP代码标识 想在页面中编写PHP​代码非常容易,如下面代码: <?php echo "想学习php吗?来慕课网吧";?> 就像你可以编写JavaScript脚本 ...

最新文章

  1. DataBinding
  2. 5月22日阿里云网络变更公告
  3. 夜深深~帮别人做课程设计。。。
  4. mysql 二元分词_MySQL 中文分词原理
  5. jsp中获取list长度
  6. 7-169 汉密尔顿回路 (25 分)
  7. Android开发之Scroller
  8. 2020年日历电子版(打印版)_灵感 | 快来康康——2020年的日历设计的这么有创意?...
  9. [Python笔记]第一篇:基础知识
  10. kali php服务器,在云服务器上搭建公网kali linux2.0
  11. 极域电子教室与360冲突解决方法
  12. 利用Excel宏中文转拼音方法
  13. vue遍历中key详解 (Demo案例)
  14. Ubuntu安装DHCP服务
  15. 用C++实现渊子赛马程序
  16. Linux 自签名ssl证书生成
  17. python编程的缩进什么意思_编程缩进是什么意思
  18. ios 13 全局修改 present 卡片式
  19. Ranked List Loss for Deep Metric Learning | 阅读笔记
  20. 如何在微软Azure上搭建个人博客网站

热门文章

  1. 个人计算机中的使用记录,电脑被人动过:如何查看别人在你电脑上的使用痕迹 -电脑资料...
  2. 适合圣诞元旦送礼的蓝牙耳机有哪些?推荐延迟低的游戏蓝牙耳机
  3. excle单元格斜分
  4. ITF跆拳道考试内容
  5. 团队口号|营销团队励志口号大全
  6. excel分类_11月25日上海站 Excel在财务管理中的应用—高级篇
  7. VS2015+QT Excel相关处理
  8. java万人同屏手游_在手游里实现百人同屏竞技?网易这款手游已吊打很多端游!...
  9. X2Go 方向键异常的原因以及暂时的解决方法
  10. 计算机操作系统安装与应用软件安装不了,电脑什么程序都不能安装了怎么办?...