初识Java——指针

2023-11-17

指针(Pointer)

  还记得第一次接触指针是在大一的c语言学习中,当时学完之后只知道 * 就是代表的指针,但是至于其真实含义及用法还没有真正学会。这一次从零开始学习Java,又一次学习到了指针,因此对指针有了更多的认识,下面就是通过最近的学习我对指针的认知。

首先要讲指针,就不得不讲变量。因为指针中保存着变量的地址。

变量——计算机语言中能储存计算结果或能表示值的抽象概念

从字面上来看变量就是指可以进行变化的量。往深的说变量其实就是计算机存储临时数据时所创建的区域。在创建每一个变量的时候计算机都会给这个区域随机分配一个地址,这样系统就能通过这个地址找到这个临时区域,进而读取到只属于这个区域的临时数据。因为地址时系统随机分配的,因此直接访问地址从而获取临时数据时可能会产生错误,那为了避免这种情况,就引入了“变量名”这个概念,通过变量名 ->地址 -> 数据,这样就能解决上面的问题。

指针——编程语言中的一个对象

形象的说指针就是一种方法或者是工具,它能够利用地址使它的值直接指向内存中一个区域的值。又因为通过地址也能找到特定的变量单元(内存中一个区域的值),所以也可以将地址形象的成为“指针”。意思就是指针能够通过以它自身为地址从而找到变量,从而使系统访问到这个变量中的数据。

举一个非常简单的例子,操场上有一个由100名学生组成的10*10的方阵,我们只需要通过第几行第几列就能准确地找到这个学生,而这个“行”和“列'就可以称为指针。

下面我在c语言中用代码来表示指针,并且进一步解释。

#include<stdio.h>
void main() {
	int a = 3; //创建一个普通变量a 将数值3赋予a
	int b = 4; //创建一个普通变量b 将数值4赋予b
	int* c;    //创建一个指针变量c 指向b
	c = &b;    //将变量b的地址赋予c 找到所需的变量单元
	int** d;   //创建一个指向指针变量c的指针的指针变量d
	d = &c;
	printf("a的值=%d\n", a);  //输出a的值=3
	printf("b的值=%d\n", b);  //输出b的值=4
	printf("a的地址=%d\n", &a);  //&为取地址符号 输出a的地址=20183372
	printf("b的地址=%d\n", &b);  //输出b的地址=20183360
	printf("c的地址=%d\n", &c);  //输出c的地址=20183348
	printf("d的地址=%d\n", &b);  //输出d的地址=20183360
	printf("*c的结果=%d\n", *c);  //输出*c的结果=4(b的值)
	printf("c的值=%d\n", c);    //输出c的值=20183360(b的地址)
	printf("*d的结果=%d\n", *d);  //输出*d的结果=20183360(b的地址)
	printf("d的值=%d\n", d);    //输出d的值=20183348(c的地址)
	printf("**d的结果=%d\n", **d);   //输出**d的值=4(b的值)
	printf("%d\n", *&a);   //输出3(a的值)
	printf("%d\n", *&**&d);   //输出20183360(b的地址)
}

以上就是我学习指针的所有心得。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

初识Java——指针 的相关文章

  • 如何为最终用户方便地启动Java GUI程序

    用户想要从以下位置启动 Java GUI 应用程序Windows 以及一些额外的 JVM 参数 例如 javaw Djava util logging config file logging properties jar MyGUI jar
  • Java new Date() 打印

    刚刚学习 Java 我知道这可能听起来很愚蠢 但我不得不问 System out print new Date 我知道参数中的任何内容都会转换为字符串 最终值是 new Date 返回对 Date 对象的引用 那么它是如何打印这个的呢 Mo
  • Java Swing:从 JOptionPane 获取文本值

    我想创建一个用于 POS 系统的新窗口 用户输入的是客户拥有的金额 并且窗口必须显示兑换金额 我是新来的JOptionPane功能 我一直在使用JAVAFX并且它是不同的 这是我的代码 public static void main Str
  • Java EE:如何获取我的应用程序的 URL?

    在 Java EE 中 如何动态检索应用程序的完整 URL 例如 如果 URL 是 localhost 8080 myapplication 我想要一个可以简单地将其作为字符串或其他形式返回给我的方法 我正在运行 GlassFish 作为应
  • Play框架运行应用程序问题

    每当我尝试运行使用以下命令创建的新 Web 应用程序时 我都会收到以下错误Play http www playframework org Error occurred during initialization of VM Could no
  • 在 java 类和 android 活动之间传输时音频不清晰

    我有一个android活动 它连接到一个java类并以套接字的形式向它发送数据包 该类接收声音数据包并将它们扔到 PC 扬声器 该代码运行良好 但在 PC 扬声器中播放声音时会出现持续的抖动 中断 安卓活动 public class Sen
  • 使用 Android 发送 HTTP Post 请求

    我一直在尝试从 SO 和其他网站上的大量示例中学习 但我无法弄清楚为什么我编写的示例不起作用 我正在构建一个小型概念验证应用程序 它可以识别语音并将其 文本 作为 POST 请求发送到 node js 服务器 我已确认语音识别有效 并且服务
  • 无法展开 RemoteViews - 错误通知

    最近 我收到越来越多的用户收到 RemoteServiceException 错误的报告 我每次给出的堆栈跟踪如下 android app RemoteServiceException Bad notification posted fro
  • 列出jshell中所有活动的方法

    是否有任何命令可以打印当前 jshell 会话中所有新创建的方法 类似的东西 list但仅适用于方法 您正在寻找命令 methods all 它会打印所有方法 包括启动 JShell 时添加的方法 以及失败 被覆盖或删除的方法 对于您声明的
  • 斯坦福 NLP - 处理文件列表时 OpenIE 内存不足

    我正在尝试使用斯坦福 CoreNLP 中的 OpenIE 工具从多个文件中提取信息 当多个文件 而不是一个 传递到输入时 它会给出内存不足错误 All files have been queued awaiting termination
  • 十进制到八进制的转换[重复]

    这个问题在这里已经有答案了 可能的重复 十进制转换错误 https stackoverflow com questions 13142977 decimal conversion error 我正在为一个类编写一个程序 并且在计算如何将八进
  • Java按日期升序对列表对象进行排序[重复]

    这个问题在这里已经有答案了 我想按一个参数对对象列表进行排序 其日期格式为 YYYY MM DD HH mm 按升序排列 我找不到正确的解决方案 在 python 中使用 lambda 很容易对其进行排序 但在 Java 中我遇到了问题 f
  • Java TestNG 与跨多个测试的数据驱动测试

    我正在电子商务平台中测试一系列商店 每个商店都有一系列属性 我正在考虑对其进行自动化测试 是否有可能有一个数据提供者在整个测试套件中提供数据 而不仅仅是 TestNG 中的测试 我尝试不使用 testNG xml 文件作为机制 因为这些属性
  • 在两个活动之间传输数据[重复]

    这个问题在这里已经有答案了 我正在尝试在两个不同的活动之间发送和接收数据 我在这个网站上看到了一些其他问题 但没有任何问题涉及保留头等舱的状态 例如 如果我想从 A 类发送一个整数 X 到 B 类 然后对整数 X 进行一些操作 然后将其发送
  • Java执行器服务线程池[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如果我使用 Executor 框架在
  • 捕获的图像分辨率太大

    我在做什么 我允许用户捕获图像 将其存储到 SD 卡中并上传到服务器 但捕获图像的分辨率为宽度 4608 像素和高度 2592 像素 现在我想要什么 如何在不影响质量的情况下获得小分辨率图像 例如我可以获取或设置捕获的图像分辨率为原始图像分
  • 当我从 Netbeans 创建 Derby 数据库时,它存储在哪里?

    当我从 netbeans 创建 Derby 数据库时 它存储在哪里 如何将它与项目的其余部分合并到一个文件夹中 右键单击Databases gt JavaDB in the Service查看并选择Properties This will
  • 如何修复 JNLP 应用程序中的“缺少代码库、权限和应用程序名称清单属性”?

    随着最近的 Java 更新 许多人都遇到了缺少 Java Web Start 应用程序的问题Codebase Permissions and Application name体现属性 尽管有资源可以帮助您完成此任务 但我找不到任何资源综合的
  • java.lang.IllegalStateException:驱动程序可执行文件的路径必须由 webdriver.chrome.driver 系统属性设置 - Similiar 不回答

    尝试学习 Selenium 我打开了类似的问题 但似乎没有任何帮助 我的代码 package seleniumPractice import org openqa selenium WebDriver import org openqa s
  • Spring Boot @ConfigurationProperties 不从环境中检索属性

    我正在使用 Spring Boot 1 2 1 并尝试创建一个 ConfigurationProperties带有验证的bean 如下所示 package com sampleapp import java net URL import j

随机推荐

  • ChatGPT-Next-Web:Vercel 和 Cloudflare 的快速部署

    项目地址 GitHub Chanzhaoyu chatgpt web 用 Express 和 Vue3 搭建的同时支持 openAI Key 和 网页 accessToken 的 ChatGPT 演示网页 依赖安装 1 安装node cur
  • BI-SQL丨行列转换

    行列转换 行列转换 在SQL Server中属于常见的基本操作 无论是搭建数仓 还是通过PowerBI进行数据分析 我们总会接触到各式各样的数据源 而在这些数据源中 除了标准的大型数仓外 我们很少能够拿到标准规范的数据表结构 接触最多的 往
  • 最熟悉的陌生人:ListView 中的观察者模式

    http blog csdn net u011240877 article details 52683711 RecyclerView 得宠之前 ListView 可以说是我们用的最多的组件 之前一直没有好好看看它的源码 知其然不知其所以然
  • tar分卷压缩解压

    1 使用tar分卷压缩 格式 tar cvzf filedir split d b 50m filename 样例 tar cvzf dir split d b 10m dirname tar gz 将 dir 打包 并切割为 10m 的包
  • python——*和**

    python中 和 的使用分两个方面 一个是计算 另一个是参数传递过程中元素的打包和解包 计算中的运用 和 在python中最常见的作用分别是 相乘 和 乘幂 如下 gt gt gt a 2 gt gt gt b 3 gt gt gt c
  • 20个Android游戏源码,…

    原文地址 分享20个Android游戏源码 希望大家喜欢哈 作者 我算哪根葱 分享20个 Android 游戏源码 希望大家喜欢哈 http www apkbus com android 21834 1 1 html Android 疯狂足
  • 凸优化学习(三)——凸函数

    注意 本文内容来自于吴恩达老师cs229课堂笔记的中文翻译项目 https github com Kivy CN Stanford CS 229 CN 中的凸优化部分的内容进行翻译学习 3 凸函数 凸优化的一个核心要素是凸函数的概念 定义
  • vtm配置以及编码示例

    vtm配置以及编码示例 下载VTM源码 网址 VTM源码 选择对应的版本下载 版本从2 0到最新的版本 1 0版本的VTM需要使用HM的工具svn下载 VTM 1 0源码地址 https jvet hhi fraunhofer de svn
  • STM32F4 IAP 跳转 APP问题

    1 概念 IAP 的作用 网上其他资料已经有很多介绍了 这里放一个链接 不进行深入的介绍 本文的关注重点是Bootloader在跳转APP程序中出现的问题 IAP的实现原理讲解以及中断向量表的偏移 2 程序 本人主要做应用层的开发 所有Bo
  • python--判断奇数偶数

    num int input 输入一个数 if num 2 0 print 0 是偶数 format num else print 0 是奇数 format num 优化 while True try num int input 输入一个整数
  • TS中类型推论、类型别名和never类型

    一 类型推论 TypeScript会在没有明确的指定类型的时候推测出一个类型 这就是类型推论 如果没声明变量 没定义类型 也没赋值 这时候TS会推断成any类型可以进行任何操作 let str str 456 str null 二 类型别名
  • 5分钟 教你搭建个人博客

    链接 https www jianshu com p 4eaddcbe4d12 五分钟倒数已经可以计时了 三步完成免费个人博客搭建 这是一篇小白也能看懂的文章 本文主要针对mac OS Windows 除了软件安装方式和命令有些区别 装了g
  • C++11之初始化列表

    系列文章 C 11之正则表达式 regex match regex search regex replace C 11之线程库 Thread Mutex atomic lock guard 同步 C 11之智能指针 unique ptr s
  • redis部署锦集,redis部署都在这了。

    大数据之Redis Redis各种部署方案和实现 Redis在大数据技术的发展中主要是用来作为中间值存储 快速计算 管道等工具使用 今天先给大家介绍一下关于Redis的部署方案和实现 其原理和应用将会在下一期和大家分享 直接上干货 一 单机
  • 从零起步:学习数据结构的完整路径

    文章目录 1 基础概念和前置知识 2 线性数据结构 3 栈和队列 4 树结构 5 图结构 6 散列表和哈希表 7 高级数据结构 8 复杂性分析和算法设计 9 实践和项目 10 继续学习和深入 11 学习资源 12 练习和实践 欢迎来到数据结
  • 在MDK5中新建STM32F4XX工程模板(基于固件库)

    0 库函数和寄存器的区别 本质上是一样的 可以在库函数模板里面 直接操作寄存器 因为官方库相关头文件有寄存器定义 但是不能在寄存器模板调用库函数 因为没有引入库函数相关定义 了解寄存器基本原理的目的是为了让我们对STM32相关知识有比较深入
  • linux显示指定目录下的所有文件的文件类型和文件名

    linux显示指定目录下的所有文件的文件类型和文件名 并打印普通文件个数 用到的函数 DIR opendir const char name struct dirent readdir DIR dirp int closedir DIR d
  • python 离群值_如何从Numpy数组中删除离群值

    我写了一个代码 取多个图像的平均值来检索背景 这基本上删除了图像中的移动对象 我试着在取平均值之前去掉离群值 这样我就可以得到背景而不是褪色的对象 我尝试了一些技巧 最近的一个是 usr bin env python3 import num
  • lock-linux

    sem unlink sem open pthread getspecific
  • 初识Java——指针

    指针 Pointer 还记得第一次接触指针是在大一的c语言学习中 当时学完之后只知道 就是代表的指针 但是至于其真实含义及用法还没有真正学会 这一次从零开始学习Java 又一次学习到了指针 因此对指针有了更多的认识 下面就是通过最近的学习我