首页 > 其他分享 >指针的基础知识(上)

指针的基础知识(上)

时间:2022-11-19 22:32:24浏览次数:42  
标签:定义 int 基础知识 门牌号 地址 变量 指针

大家晚上好呀,今天要给大家带来的是关于指针的基础知识点。

首先,我们都知道如何一个整型的变量,并赋值给它。如:int i=5;

但它在电脑中具体的运行是怎么样的呢?其实啊,首先在电脑内开辟一个关于in的空间,(4个字节)每个字节都是一个空间,每个空间都有自己的门牌号,然后再把5放进去。这种就是直接访问法,并且我们今天要讲的指针也是类似这样的操作,但指针其实是间接访问法。

定义指针的具体形式:变量类型+*+变量名。如int *p;它的意思就是定义一个变量p,p是一个指针,指向整型的地址,然后int定义的变量类型就决定了要取多大的空间来读取数据。说白了指针其实就是一个地址,相当于一个房间的门牌号。

指针的基础知识(上)_指针的基础知识

我们定义的指针有两种形式,第一种其实可以这样,

int*p=&a;像这样

指针的基础知识(上)_指针的基础知识_02

取i的地址给指针p,指针只能指向数据的首地址,即变量i的储存空间的第一个门牌号,然后用4个字节来接受i,所以这就暗示了我们,指针两边的数据类型要一致,

指针的基础知识(上)_指针的基础知识_03

指针的基础知识(上)_指针的基础知识_04

所以这样就都不对啦

然后还有一种定义的办法,就是,直接intp;没有对指针p进行取地址,这种指针叫做野指针。但这样的指针是很危险的,因为如果没有取地址,那电脑就会自动取地址的,这时候万一取到了一些电脑核心代码的地址然后进行改写,系统就会有崩溃的风险。所以我们可以赋值0给指针p,我们指针中的零是NULL;intp=NULL;这样就可以避免啦

然后就是需要辨别一下,如果一个程序里出现了两个*p,这两个的含义是不同的。

指针的基础知识(上)_指针的基础知识_05

第一次的*p出现在开头的定义,这时候就是定义了一个指针,像我上面那个,

第二次的*p 就是取值的意思;

所以我们记住,变量p就是只能取地址,*p才能取值。

最后其实还有一个万能指针,void *p=NULL;  也就是说我一开始定义这个指针还不知道它要用来取哪种类型的变量,然后我们要用的时候就进行强行转换就好啦,但是万能指针不经常用,举个例子只看我画的就好啦

指针的基础知识(上)_指针的基础知识_06

好啦,今天的分享就到这里啦,我们明天见!










标签:定义,int,基础知识,门牌号,地址,变量,指针
From: https://blog.51cto.com/u_15863860/5870799

相关文章

  • JavaScript基础知识——对象
    定义无序数据的集合,键值对的集合。写法构造函数letuser=newObject({name:'yang',age:100})字面量letuser={name:'yang',age:200}匿名对象console.l......
  • 子进程相关基础知识
    昨日内容回顾粘包问题及解决思路粘包问题:TCP协议下将人认知中应该分来的数据打包发送,导致所谓粘包问题。解决思路:明确应接收数据的长度(至少首次收到的数据长度应明......
  • Linux基础第一章:基础知识与基础命令(第一部分)
    一、关于Linux1.1什么是shell?1.Linux系统中运行的一种特殊程序(也就是软件)2.在用户和内核之间充当“翻译官”3.用户登录Linux系统时,自动加载一个Shell程序4.Bash是Linux......
  • Vue2基础知识点
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"conten......
  • 【c&c++】二级指针的使用
    有时候,我们需要在函数体的内部申请内存空间并初始化,然后将内部申请的存储空间交付给外部指针来引用,这时候,我们可以使用二级指针作为申请空间的函数的参数来实现。main.c......
  • JSON系列1:JSON基础知识
    点击查看代码myObj={"name":"BillGates","age":62,"cars":[ {"name":"Porsche","models":["911","Taycan"]}, {"name":"BMW",&q......
  • c指针
    intp;//这是一个普通的整型变量int*p;//首先从P处开始,先与*结合,所以说明P是一个指针,然后再与int结合,说明指针所指向的内容的类型为int型.所以P是一个返回整型......
  • 计算机二级考试公共基础知识部分——-数据库
    相关视频——【极客学院】计算机等级考试二级c语言:公共基础知识部分(下)_哔哩哔哩(゜-゜)つロ干杯~-bilibili我的小站——[半生瓜のblog](半生瓜のblog(doraemon2.xyz))现......
  • 函数指针
     1#include<cstdio>2#include<iostream>3usingnamespacestd;4intmax(intx,inty)5{6returnx>y?x:y;7}8intmain()9{10int......
  • 重载为什么一定要指针才行呢?请专家解答下
    请教专家,为什么下面的代码都是输出A类的方法,而采用指针才能达到重载的目的。1#include<endian.h>2#include<iostream>3usingnamespacestd;45classA......