1.指针的基本介绍

ops/2024/12/29 10:24:59/

一、RAM与变量所占字节

🍉 要理解指针,首先要理解不同的数据类型或者不同的变量在计算机的内存中是如何存储的?

计算机的内存(RAM 随机存储器)段或区,在内存中都代表一个字节,作为一个典型的内存系统,每个字节都有一个地址。

🍇 不同变量类型所占用的字节

  • char:1Byte(8位)。
  • short:2Byte(16位)。
  • int:4Byte(32位)。
  • long:4Byte(32位)或8Byte(64位)。
  • float:4Byte(32位)。
  • double:8Byte(64位)。
  • long double:8个Byte(64位)或12Byte(96位)。

二、什么是指针?在内存中是怎么样的?

  • 系统内部会有一张表,通过查表就可以知道不同变量所占用的内存大小
  • Pointes : Varibles that store address of other variable

  • 指针实质上是存储的地址,可以通过操作指针来操作地址里面的内容。
  • 通过 *p 可以进行解引用,

三、指针

#include<stdio.h>
int main()
{int a=88,b=66;int *p = &a;//int *p;//p = &a;char c='1';char *d=&c;printf("p = %lu\n",p);printf("p+1 = %lu\n",p+1);printf("&a = %lu\n",&a);printf("*p = %lu\n",*p);printf("d = %lu\n",d);printf("d+1 = %lu\n",d+1);printf("char字节数=%lu\n",sizeof(char));printf("int字节数=%lu\n",sizeof(int));printf("float字节数=%lu\n",sizeof(float));printf("long字节数=%lu\n",sizeof(long));printf("char* 字节数=%lu\n",sizeof(char *));printf("int* 字节数=%lu\n",sizeof(int *));printf("long* 字节数=%lu\n",sizeof(long *));return 0;
}

输出

p = 140737488347616
p+1 = 140737488347620
&a = 140737488347616
*p = 88
d = 140737488347615
d+1 = 140737488347616
char字节数=1
int字节数=4
float字节数=4
long字节数=8
char* 字节数=8
int* 字节数=8
long* 字节数=8

🍇 🍓  🍈 🍒 🍑 🥭 🍍 🥥 🥝 🍅 🍆 🥑 🥦指针的偏移量根据什么确定?

可以看出指针的大小=8byte,但是偏移量不是根据8byte进行偏移的,那根据什么来的呢

  • p + 1 和 p 之间的差距是 4 字节,因为 p 是一个 int * 指针,而 int 类型的大小是4字节。
  • d + 1 和 d 之间的差距是 1 字节,因为 d 是一个 char * 指针,而 int 类型的大小是1字节

参考链接

【强烈推荐】4小时彻底掌握C指针 - 顶尖程序员图文讲解 - UP主翻译校对 (已完结)_哔哩哔哩_bilibili


http://www.ppmy.cn/ops/145898.html

相关文章

中关村科金海外外呼机器人如何通过大数据分析帮助跨境电商实现精准营销?

精准营销是企业提升市场竞争力、优化客户体验和实现可持续增长的关键策略。与传统的广撒网式营销不同&#xff0c;精准营销通过数据分析、人工智能和机器学习等先进技术&#xff0c;深入了解客户的偏好、行为和需求&#xff0c;从而提供高度个性化的产品和服务推荐。中关村科金…

CSharp: Oracle Stored Procedure query table

存储过程查询postgreSQL,Oracle 和sql server,Mysql 有区别。程序调用也是有区别。 oracle sql script: CREATE OR REPLACE PROCEDURE procSelectSchool(paramSchoolId IN char,p_cursor OUT SYS_REFCURSOR ) AS BEGINOPEN p_cursor FORSELECT *FROM SchoolWHERE SchoolId p…

计算机网络实验室建设方案

一、计算机网络实验室拓扑结构 计算机网络综合实验室解决方案&#xff0c;是面向高校网络相关专业开展教学实训的综合实训基地解决方案。教学实训系统采用 B&#xff0f;S架构&#xff0c;通过公有云教学实训平台在线学习模式&#xff0c;轻松实现网络系统建设与运维技术的教学…

sql group by 多个字段例子

有表如下&#xff1b; 获取某年份、某地区、某产品的销售总额&#xff0c; 或者根据需要把字段顺序换一下&#xff1b; insert into sales (product, year, region, amount) values (飞机,2000,东部,5); insert into sales (product, year, region, amount) values (飞机,2001,…

spring url匹配

明明是PostMapping却报Request method POST not supported 跟踪源码 HandlerMethod org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping.handleNoMatch( PartialMatchHelper helper new PartialMatchHelper(infos, request); org.springframew…

使用docker compose安装gitlab

使用docker compose安装gitlab GitLab简介设置GITLAB_HOME路径创建docker挂载目录获取可用的GitLab版本编写docker-compose.yml文件启动docker基础配置 GITLAB_OMNIBUS_CONFIG修改配置 中文设置数据库配置系统邮箱配置 GitLab简介 GitLab是一个基于Git的开源项目&#xff0c…

解决k8s部署dashboard时一直处于Pending状态的问题

直接用离线包就行 命令 [rootk8s-master ~]# docker load -i calico-image-v3.25.0.tar [rootk8s-master ~]# kubectl apply -f calico.yaml链接在https://download.csdn.net/download/weixin_42759398/90192045 [rootk8s-master ~]# docker load -i calico-image-v3.25.0.t…

html5解决华为原生浏览器底部栏兼容问题

前言 我们之前开发的H5网页&#xff0c;有客户反馈页面底部被浏览器下方的工具栏遮住了&#xff0c;经过测试发现目前只有华为原生x5浏览器底部栏出现这个兼容问题&#xff0c;它遮住了底部页面&#xff0c;造成了这个样式兼容问题。 可以看出&#xff1a;在华为浏览器中下方…