首页 > 其他分享 >有关指针的学习笔记

有关指针的学习笔记

时间:2024-05-30 18:29:42浏览次数:16  
标签:指向 strr 笔记 学习 地址 str 我们 指针

指针简介

指针,顾名思义

就是只想某一个地方

而这个地方就是某个数据存放的地址

如图,我们构造了一个整形变量a并赋值为一

我们在想构造类型的前缀后加   *

便表示是该类型的指针

而我们构造的指针q

便指向了整型变量a的地址

指针有很多类型

比如这个就是一个字符串指针


而这是一个8字节的整形指针

但万变不离其宗

他们的作用就是指向一个由16个16进制的数字所构成的地址

只是他们指向的地址所存放的数据类型不同

所以在定义的时候

要用指向的地址所存放的数据类型来定义

指针的实质

前面我们提到

指针指向的是一个由16个16进制的数字所构成的地址

而我们可以用%p来查看

在这个例子中

我们将指针指向字符串数组的首元素

而在默认台的输出时,我们可以看到

两者是完全一致的

多维数组指针的探索(本为章只以int类进行探讨)

如图,我们可以发现,str,str[0],str[0][0]所指向的地址是一致的

所以我认为对为数组的理解可以为多个嵌套数组

str是数组str[0]的名称

而str[0]又是str[0][0]的名称

str[0][0][0]又是str[0][0]

由于我们知道数组的名称就是指向数组首元素的地址

所以在嵌套下,他们都指向了同一个地址

那就是&str[0][0][0]

要注意的是

此时的是str[0][0][0]相当于一个指针指向存放在字符常量区的数据,

是类似二级指针的用法

而我们在前面加上一个&

就可以得到存放这个指针的地址

我们对多为数组的存储进行探索

由于int的存储为4字节

所以他们的空间是挨在一起的

在空间上如图

在同列上是指向同一个空间

行上没相隔一个空为4个字节

二级指针

二级指针就是指针又指向一个指针

如图

便是对二级指针的简单应用

我在这对六行输出做一下简单解释

1.定义一个整形变量为1,而我们用&获得了变量的地址

2.我们在第二行定义了一个指针strr指向了str,而我们的第二行输出为strr所保存的地址

3.我们在第三行定义了一个指针strrr指向了先前我们定义的指针strr,而我们的第三行输出为strr指针的地址

4.输出str的值

5.运用*进行间接引用,输出strr所指向的地址所存放的值

6.先运用*(第二个)进行间接引用,输出strrr所指向的地址所保存的值,而strrr指向的strr正好是一个地址

所以我们再用*(第一个)在进行间接引用,指向strr所指向的地址所保存的值

所以我们最后的到的为

1.str的地址

2.str的地址

3.str的地址

4.str的值

5.str的值

6.str的值

指针的几个注意事项

1.比如说我们定义指针q和p

我们就可以用if(q==0)

来判断指针是否为空指针(指向NULL)

也可以用if(p>q)

判断p和q储存空间关系

2野指针

比如在我们使用malloc开辟空间并free后

忘记将指针指向NULL

就会导致指针指向为开辟的空间

也就是我们常说的野指针

我们要记得即使将无用的指针指向NULL

谢谢大家观看

点一个免费的赞和关注吧

欢迎大家评论哦

标签:指向,strr,笔记,学习,地址,str,我们,指针
From: https://blog.csdn.net/AD057708281024/article/details/139293318

相关文章

  • mysql高级篇学习(数据表的设计方法,索引优化)
    使用docker安装mysql安装docker#yum包更新到最新yumupdate#卸载旧的dockeryumremovedocker\docker-client\docker-client-latest\docker-common\docker-latest\......
  • C语言--深入指针(1)二刷
    //野指针//intmain()//{//inta=10;//int*p=&a;//给一个明确的地址////int*p2=NULL;//给P2赋值为空指针////*p2=200;一旦将指针初始化就不能用这个指针了////只要指针是NULL就不能进行访问//return0;//}//局部变量的地址返回就......
  • 学习unigui【25】关于图标
    网上有不少介绍。自己的经验:是否需要下载文件fontawesome-free-6.5.1-web(),没有研究。说ext_js已经下载配套了。我很懒,得过且过。1、下载fontawesome-free-6.5.1-web放在resource,一般推荐files。2、在ServerModule的costomfiles:.\resource\fontawesome-free-6.5.1-web\css\all......
  • PyTorch学习(8):PyTorch中Tensor的合并于拆分(torch.cat, torch.stack, torch.trunk, tor
    1.写在前面       在使用PyTorch执行深度学习开发时,经常会用到对Tensor的合并于拆分操作。如我们在使用CSP时,有时候会需要将Tensor拆分成两部分,其中一部分进行进行CrossStage操作,另一部分执行多重卷积操作,这个时候我们就会用到四个典型的接口,分别是torch.cat,torch......
  • JavaDS-学习数据结构之如果从零开始手搓顺序表,顺带学习自定义异常怎么用!
    前言笔者开始学习数据结构了,虽然笔者已经会用了,不管是C++中的stl亦或是Java中的集合,为了算法比赛多少都突击过,但只知其然而不知其所以然,还是会限制发展的,因此,笔者写下这篇博客.内容是手搓一个顺序表.顺带加一点异常的使用,大伙看个乐子就好了.有错误直接私信喷我就......
  • 随机森林笔记
    学习网址:https://blog.csdn.net/wjjc1017/article/details/135904420随机森林(RandomForest)属于集成算法里的Bagging方法,其中Bagging属于多个分类器里的并行方法,Boosting(属于多个分类器里的串行方法)。核心思想是根据多个分类器的结果,判定为票数多的类别,如果是回归,则是多个回归结......
  • 算法金 | 吴恩达:机器学习的六个核心算法!
    大侠幸会,在下全网同名「算法金」0基础转AI上岸,多个算法赛Top「日更万日,让更多人享受智能乐趣」人工智能领域的权威吴恩达教授,在其创立的《TheBatch》周报中发表了一篇博文,概述了机器学习领域六种基础算法的历史和重要性。他强调了在这一领域不断学习和更新知识的必要......
  • pwn学习-ret2shellcode
    今天学习了pwn中的ret2shellcode,在之前学习的ret2text中,程序给我们留下了后门函数,可以直接溢出执行,而ret2shellcode是最经典的栈溢出漏洞利用方法,简单原理如下:在栈溢出漏洞利用成功后,我们可以控制返回地址代码执行,但是这些代码在程序中默认没有,需要我们自己添加,这段代码被称为s......
  • 深入探索汇编语言的顶尖级应用领域,包括多核并行处理、物联网和嵌入式系统、高性能计算
    汇编语言初级应用的大纲:1.汇编语言概述介绍汇编语言的基本概念和作用。解释汇编语言与高级语言的区别。简要说明汇编语言的历史和发展。2.汇编语言基础讲解汇编语言的基本语法和结构。介绍汇编语言中的指令、寄存器、内存等概念。解释汇编语言程序的组成部分,如数据段......
  • 论文阅读笔记(十)——CRISPR-GPT: An LLM Agent for Automated Design of Gene-Editin
    论文阅读笔记(十)——CRISPR-GPT:AnLLMAgentforAutomatedDesignofGene-EditingExperiments目录论文阅读笔记(十)——CRISPR-GPT:AnLLMAgentforAutomatedDesignofGene-EditingExperimentsAbstract简介名词解释问题CRISPR-GPT概述MethodToolProvider......