指针的含义、表示、规范、存储、运用

指针的含义、表示、规范、存储、运用

  • 指针的含义
  • 指针的表示
  • 指针的规范
    • 先声明再定义
    • 声明和定义一起表示
    • 错误表示
  • 指针的存储
    • 理解一个变量的存储过程和原理
    • 理解一个指针的存储过程和原理
    • 理解多个指针的存储过程和原理
  • 指针的运用

指针的含义

表示某个变量或数据所在的内存地址 注意是内存地址 不是内存地址上的数据

指针的表示

一般用指针运算符&和 表示 其中符号&表示取地址运算符 符号表示取地址上数据运算符 例如:&value 表示取变量value在内存中分配的地址 *value 表示取变量value在内存中所分配地址上的数据

指针的规范

先声明再定义

int *p;//这里是声明一个整数型指针变量p 注意int *p虽然是连着一起写 实则是int* p 其中p是变量名 int*是数据类型 且是整数型指针数据类型  
p = &a;//这里是定义一个整数型指针变量p 而指针就是表示某个变量或数据的内存地址 进一步可知&a就是取变量a在内存中分配的地址赋给整数型指针变量p 
printf("p = %d\n",p);//打印出整数型指针变量p等于地址6000001

声明和定义一起表示

int *p = &a;//取变量a在内存中分配的地址赋给整数型指针变量p
printf("p = %d\n",p);//打印出整数型指针变量p等于地址6000001

错误表示

int a = 2;//把十进制数2赋给整数变量a
int *p = a;//这里是错误的表达方式 不能把一个具体的数据赋给指针 

指针的存储

理解一个变量的存储过程和原理

int a = 5;
printf("a = %d",a);

解释以上:在栈中定义了一个变量a,并且在内存中开辟了一个int类型大小的空间, 即4个字节空间 ,然后让变量a指向这片空间,在变量a所在那片空间,里面存放数值5 ,把数值5转换成二进制数,存到变量a的4个字节空间,如下图所示:
在这里插入图片描述

理解一个指针的存储过程和原理

int a = 5;
int *p;//这里是声明一个整数型指针变量p 注意int *p虽然是连着一起写 实则是int* p 其中p是变量名 int*是数据类型 且是整数型指针数据类型  
p = &a;//这里是定义一个整数型指针变量p 而指针就是表示某个变量或数据的内存地址 进一步可知&a就是取变量a在内存中分配的地址赋给整数型指针变量p 
printf("p = %d\n",p);//打印出整数型指针变量p等于地址6000001

解释以上:在栈中定义了一个变量a,并且在内存中开辟了一个int类型大小的空间, 即4个字节空间 ,然后让变量a指向这片空间,在变量a所在那片空间,里面存放数值5 ,把数值5转换成二进制数,存到变量a的4个字节空间,另外在栈中再定义一个指针变量p,且在内存中开辟了一个int*类型大小的空间,即4个字节空间 ,最后从变量a的内存空间取出变量a所在内存地址,存放到指针变量p开辟的内存地址上,如下图所示:
在这里插入图片描述

理解多个指针的存储过程和原理

int a = 5;
int *p;//这里是声明一个整数型指针变量p 注意int *p虽然是连着一起写 实则是int* p 其中p是变量名 int*是数据类型 且是整数型指针数据类型  
p = &a;//这里是定义一个整数型指针变量p 而指针就是表示某个变量或数据的内存地址 进一步可知&a就是取变量a在内存中分配的地址赋给整数型指针变量p
int **q;//
q = &p;//
printf("q = %d\n",q);//打印出整数型指针变量q等于指针变量p的内存地址7000001

解释以上:先对数据类型和变量划分开,int **q的变量名为q,数据类型为int **,int 中存放的是int类型数据的地址,而int **中存放的是int类型数据的地址的地址,上述我们明白了,一个是指一个int数值的地址,则指针变量p中存放的是int数值的地址,即p = 6000001,为变量a的地址。那么我们可以推到,指针变量q就是存放指针变量p的地址。指针变量p存放变量a的地址,而指针变量p本身也是一个变量,它的值为变量a的地址 ,而内存也给指针变量p开辟了一片空间,让指针变量p存放它的数值,指针变量q存放指针变量p的地址,指针变量q也是一个变量。

指针的运用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/608901.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用tailscale访问对端局域网上的其他设备

当tailscale客户端应用程序直接安装在组织中的每个客户端、服务器和虚拟机上时,Tailscale 效果最佳。这样,流量就会被端到端加密,并且无需配置即可在物理位置之间移动机器。 但是,在某些情况下,你不能或不想在每台设备…

Linux第18步_安装“Ubuntu系统下的C语言编GCC译器”

Ubuntu系统没有提供C/C的编译环境,因此还需要手动安装build-essential软件包,它包含了 GNU 编辑器,GNU 调试器,和其他编译软件所必需的开发库和工具。本节用于重点介绍安装“Ubuntu系统下的C语言编译器GCC”和使用。 1、在安装前…

图片纹理贴图

/* * 当需要给图形赋予真实颜色的时候&#xff0c;不太可能为没一个顶点指定一个颜色&#xff0c;通常会采用纹理贴图 * 每个顶点关联一个纹理坐标 (Texture Coordinate) 其它片段上进行片段插值 * */#include <iostream> #define STBI_NO_SIMD #define STB_IMAGE_IMPLE…

【嵌入式移植】1、Ubuntu系统准备

Ubuntu系统准备 虚拟机与Ubuntu安装下载Ubuntu创建虚拟机系统配置 虚拟机与Ubuntu安装 嵌入式移植通常使用Linux操作系统的环境&#xff0c;使用Linux下的交叉编译工具链对BootLoader、kernel以及应用程序进行编译&#xff0c;然后下载运行。当然也可以通过各类IDE或者Windows…

从文本(.txt)文件中读取数据时出现中文乱码

前言 当需要从记事本中读取数据时&#xff0c;发现读取的数据会出现中文乱码&#xff0c;我尝试了C和C读取文件&#xff0c;发现都是这样。 乱码原因 文本文件的保存默认使用UTF-8编码方式&#xff0c;而VS编译器的编码方式是GBK&#xff0c;所以不同的编码方式导致了乱码。…

【leetcode】力扣算法之删除链表中倒数第n个节点【中等难度】

删除链表中倒数第n个节点 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 用例 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5] 输入&#xff1a;head [1], n 1 输出&#xff1a;[] 输入&#xff1a;head …

各种锁的概述

乐观锁与悲观锁 悲观锁指对数据被外界修改持保守态度&#xff0c;认为数据很容易就会被其他线程修改&#xff0c;所以在数据被处理前先对数据进行加锁&#xff0c;并在整个数据处理过程中&#xff0c;使数据处于锁定状态。 悲观锁的实现往往依靠数据库提供的锁机制&#xff0…

计算机体系结构期末复习流程大纲

1.存储器和cache 存储器的容量、速度与价格之间的要求是相互矛盾的&#xff0c;速度越快&#xff0c;没bit位价格越高&#xff0c;容量越大&#xff0c;速度越慢&#xff0c;目前主存一般有DRAM构成。 处理器CPU访问存储器的指标&#xff1a; 延迟时间&#xff08;Latency&am…

【C++】—— 工厂模式详解

目录 &#xff08;一&#xff09;工厂模式的特点 &#xff08;二&#xff09;工厂模式分类 1、简单工厂模式 2、工厂方法模式 3、抽象工厂模式 &#xff08;三&#xff09;总结与回顾 &#xff08;一&#xff09;工厂模式的特点 1、优势 ⼯⼚模式是⼀种创建型设计模式&a…

快速入门Visual Studio 2022开发.Net Framework研发环境指南

IDE工具 Visual Studio 2022 Vs2022企业版 - VisualStudioSetup.exe Visual Studio Code VSCodeUserSetup-x64-1.66.2.exeVSCodeUserSetup-x64-1.67.0-insider.exe IDE环境 编程字体YaHei.Consolas YaHei.Consolas.1.12.ttf IDE插件 Visual Studio Code常用插件 Chinese…

django项目基础后端功能使用

参考材料 Django新手项目实例-CSDN博客 一、django安装 pip3 install django 二、django项目新建 在目标目下执行 django-admin startproject testdjgo 执行完成后生成对应项目路径 三、django路由功能编写 /xxx/urls.py中编写路由信息&#xff0c;并且把路由转发到对应…

说出来你别不信,盲订问界M9的原因 你们想错了,他们只图这个

文|AUTO芯球 作者|李瑞 怎么还有人说华为是骗子&#xff1f; 华为一张海报说问界M9上市6天&#xff0c;大定超过3万台。有些人就说这是假的&#xff0c;反正没第三方数据&#xff0c;华为可以随便写。 我去&#xff0c;我作为一名大定问界M9的车主&#xff0c;就奉劝哪些黑子…

5.vue学习笔记(数组变化的侦测+计算属性+Class绑定)

文章目录 1.数组变化的侦测1.1.变更方法1.2.替换一个数组 2.计算属性计算属性缓存vs方法 3.Class绑定3.1.绑定对象3.2.多个对象的绑定形式3.3.绑定数组3.4.数组与对象 1.数组变化的侦测 1.1.变更方法 vue能够侦听响应式数组的变更方法&#xff0c;并在它们被调用时出发相关的…

Taro+vue3 实现电影切换列表

1.需求 我们在做类似于猫眼电影的小程序或者H5 的时候 我们会做到那种 左右滑动的电影列表&#xff0c;这种列表一般带有电影场次 2.效果 3.说明 这种效果在淘票票 猫眼电影上 都有的 &#xff0c;一般电影类型的H5 或者小程序 这个是都有的 第一是好看 第二是客观性比较好 …

Mysql InnoDB行锁深入理解

Record Lock记录锁 Record Lock 称为记录锁&#xff0c;锁住的是一条记录。而且记录锁是有 S 锁和 X 锁之分的&#xff1a; 当一个事务对一条记录加了 S 型记录锁后&#xff0c;其他事务也可以继续对该记录加 S 型记录锁&#xff08;S 型与 S 锁兼容&#xff09;&#xff0c;…

物联网与智能家居:跨境电商与未来生活的融合

物联网&#xff08;Internet of Things&#xff0c;IoT&#xff09;和智能家居技术正迅速崛起&#xff0c;成为跨境电商领域的创新引擎。这两者的巧妙结合不仅为消费者提供更智能、便捷的生活方式&#xff0c;同时也为电商平台和制造商带来了全新的商机。本文将深入探讨物联网与…

C++模板——(3)类模板

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd; 勤奋&#xff0c;机会&#xff0c;乐观…

使用pyinstaller打包生成exe(解决gradio程序的打包问题)

解决 [Errno 2] No such file or directory: gradio_client\types.json 问题&#xff0c;不需要手动创建hook文件 解决 FileNotFoundError: [Errno 2] No such file or directory: gradio\blocks_events.pyc 问题&#xff0c;不需要将pyi文件重命名为pyc文件 最终实现gradio程…

手撕 PCA

PCA&#xff08;Principal Component Analysis&#xff09;&#xff0c;中文名称&#xff1a;主成分分析。迄今为止最流行的降维算法。 假设 n 维空间中的一个单位立方体&#xff0c;易知&#xff1a;一维空间中该立方体中任意两点的距离不超过 1 1 1&#xff0c;二维空间中该…