C语言—指针

news2024/11/25 19:12:32

指针用来存放一个内存地址;

指针的类型就是要存放地址的变量的数据类型;

#include <stdio.h>

int main()
{
	int a = 123;
	char b = 'H';

	int *pa = &a;
	char *pb = &b;

	printf("%d\n", *pa);
	printf("%c", *pb);
}

pa要存放int类型a的地址,所以pa也要定义成int类型的指针;

不同数据类型所占用的内存空间大小不同,如果指针类型和要存放地址的变量类型不一致,指针所指向的数据就会出错;

&运算符:取地址运算符,获取某个变量的地址;

*运算符:取值运算符,用来获取指针变量执行的的数据;

定义指针 和 取值运算符都是用*,但是在不同地方表示不用的意义;

#include <stdio.h>

int main()
{
	int a = 123;
	char b = 'H';

	int *pa = &a;
	char *pb = &b;

	*pa += 1;    //等价pa = pa + 1
	*pb += 1;

	printf("%d\n", *pa);    //打印结果为124
	printf("%c", *pb);        //打印结果为I
}

当*pa += 1,对地址pa中的值加1;结果为 *pa = 123 + 1;

当*pb += 1,对字符H的ASCII码加1,结果为 *pb = 72 + 1;

#include <stdio.h>

int main()
{
	int a = 123;
	char b = 'H';

	int *pa = &a;
	char *pb = &b;

	printf("指针变量pa占内存的大小:%lld\n", sizeof(pa));
	printf("指针变量pb占内存的大小:%lld\n", sizeof(pb));

	printf("指针变量pa中的值占内存的大小:%lld\n", sizeof(*pa));
	printf("指针变量pb中的值占内存的大小:%lld\n", sizeof(*pb));

	printf("指针变量pa存储的地址:%p\n", pa);
	printf("指针变量pa所在的地址:%p\n", &pa);
	printf("变量a所在的地址:%p\n", &a);
	
}

指针变量pa占内存的大小:8
指针变量pb占内存的大小:8
指针变量pa中的值占内存的大小:4
指针变量pb中的值占内存的大小:1
指针变量pa存储的地址:0000004A7B15F604
指针变量pa所在的地址:0000004A7B15F648
变量a所在的地址:0000004A7B15F604

一个指针变量在内存中占8个字节,和其他类型的变量一样,都要在内存中开辟一个空间,用来存放值;

指针所执行的值所占内存空间的大小根据数据类型不同而不同;

指针变量pa在内存中的地址为0000004A7B15F648,

变量a在内存中的地址为:0000004A7B15F604,

int *pa = &a,就是将a的地址0000004A7B15F604存放在指针变量pa的地址0000004A7B15F648里;取 *pa 中的值的时候,就是先找到pa的地址,在从pa的地址里读取到a的地址,在从a的地址里,读取a的值;

#include <stdio.h>

int main()
{
	int a;

	int *pa = &a;

	printf("%d", *pa);
	
}

严重性    代码    说明    项目    文件    行    禁止显示状态
警告    C6001    使用未初始化的内存“a”。    Project2    C:\Users\admin\source\repos\Project2\源.cpp    9    

当声明变量未对其赋值的时候,编译器会报错,变量a的地址随机的,有可能对这个地址赋值或修改的时候是对一个危险的区域进行操作;使用指针间距访问时,必须要正确的初始化;

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

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

相关文章

评估篇 | 单元测试评估也能复用到集成测试?脚本帮你高效评估

上次我们分享了单元测试用例的复用&#xff0c;单元测试的用例可以复用到集成测试&#xff0c;那单元测试的评估是否也可以复用到集成测试&#xff1f;答案是可以的。 TPT中提供了多种多样的评估方式&#xff0c;其中的脚本评估使我们复用测试评估成为可能。脚本评估&#xff…

@EnableCaching如何一键开启缓存

EnableCaching如何一键开启缓存手动挡CacheManagerCache使用演示小结自动挡CachingConfigurationSelectorAutoProxyRegistrarProxyCachingConfigurationCacheOperationSourceCacheOperationBeanFactoryCacheOperationSourceAdvisorCacheInterceptor小结手动挡 我们首先来看看S…

成本、利润分析法在企业管理中的应用

1 、成本、利润分析法的主要内容 成本、利润分析法主要是指&#xff0c;利用数学模型&#xff0c;对关于企业成本、利润的要素分析&#xff0c;然后计算出要素的改变对企业成本、利润的影响&#xff0c;进而对企业决策提出建议的一种方法。在成本、利润分析法中&#xff0c;最主…

基础IO——文件描述符

文章目录1. 文件描述符fd1.1 open返回值2. 理解Linux下一切皆文件3. 文件描述符的分配规则4. 重定向的本质4.1 使用 dup2 系统调用4.2 追加重定向4.3 输入重定向1. 文件描述符fd 1.1 open返回值 我们先来看下面的例子&#xff1a; 运行结果如下&#xff1a; 我们知道open的…

磺基-CY5 马来酰亚胺 Cyanine5 Maleimide

磺基-CY5 马来酰亚胺 Cyanine5 Maleimide Cyanine5 maleimide是单一活性染料&#xff0c;有选择性的与硫醇基团&#xff08;比如蛋白和多肽的半胱氨酸&#xff09;结合以进行标记。我们使用水溶的Sulfo-Cyanine5 maleimide标记抗体和其他敏感蛋白。Cyanine5是Cy5的类似物&am…

Pb协议的接口测试

Protocol Buffers 是谷歌开源的序列化与反序列化框架。它与语言无关、平台无关、具有可扩展的机制。用于序列化结构化数据&#xff0c;此工具对标 XML &#xff0c;支持自动编码&#xff0c;解码。比 XML 性能好&#xff0c;且数据易于解析。更多有关工具的介绍可参考官网。 P…

Java8新特性学习

文章目录Lambda表达式为什么使用Lambda表达式Lambda表达式语法语法格式一&#xff1a;无参数&#xff0c;无返回值语法格式二&#xff1a;有一个参数&#xff0c;并且无返回值语法格式三&#xff1a;若只有一个参数&#xff0c;小括号可以省略不写语法格式四&#xff1a;有两个…

Docker容器数据卷

是什么 卷就是目录或文件&#xff0c;存在于一个或多个容器中&#xff0c;由docker挂载到容器&#xff0c;但不属于联合文件系统&#xff0c;因此能够绕过Union File System提供一些用于持续存储或共享数据的特性&#xff1a;卷的设计目的就是数据的持久化&#xff0c;完全独立…

LSTM(Long Short-Term Memory)

长短期记忆&#xff08;long short-term memory&#xff0c;LSTM&#xff09;&#xff0c;LSTM 中引入了3个门&#xff0c;即输入门&#xff08;input gate&#xff09;、遗忘门&#xff08;forget gate&#xff09;和输出门&#xff08;output gate&#xff09;&#xff0c;以…

华为时习知,让企业培训更简单!

在数字经济的发展过程中&#xff0c;人才始终是不容忽视的关键因素&#xff0c;企业对数字化人才培养的需求也愈加迫切。然而企业培训说起来简单&#xff0c;要做好却绝非易事。企业可能会面临员工分散各地、流动性大、关键岗位人才培训等复杂培训场景问题&#xff0c;无法高效…

为什么我们说NFT拥有无限潜力?

欢迎来到Hubbleverse &#x1f30d; 关注我们 关注宇宙新鲜事 &#x1f4cc; 预计阅读时长&#xff1a;8分钟 本文仅代表作者个人观点&#xff0c;不代表平台意见&#xff0c;不构成投资建议。 2021年底&#xff0c;NFT就已经发展得炙手可热了&#xff0c;热门到410亿美元投…

YOLO-V5 算法和代码解析系列(一)—— 快速开始

文章目录运行环境配置Demo重新训练 YOLO-V5s运行环境配置 环境配置的官方教程如下&#xff0c;如果一些库安装失败&#xff0c;导致安装中断&#xff0c;可以单独安装一些库&#xff0c;比如 Pytorch&#xff0c;然后再执行下列安装步骤&#xff0c;具体如下&#xff1a; 个人建…

国内食糖行业数据浅析

大家好&#xff0c;这里是小安说网控。 食糖行业是国民消费不可或缺的产业之一。2022年9月份国内成品糖产量当期值为40.4万吨&#xff0c;同比增长30.7%&#xff1b;10月份当期值为63.7万吨&#xff0c;同比下滑2%。今年1-10月份&#xff0c;国内成品糖产量累计值为1089.4万吨&…

艾美捷细胞糖酵解分析试剂盒基本参数和相关研究

艾美捷基于糖酵解细胞的测定试剂盒提供了一种比色法&#xff0c;用于检测培养细胞产生和分泌的糖酵解最终产物L-乳酸。在该测定中&#xff0c;乳酸脱氢酶催化NAD和乳酸之间的反应&#xff0c;产生丙酮酸和NADH。NADH直接将四氮唑盐&#xff08;INT&#xff09;还原为吸收490至5…

【High 翻天】Higer-order Networks with Battiston Federico (3)

目录模型&#xff08;1&#xff09;Equilibrium modelsBipartite modelsMotifs modelsStochastic set modelsHypergraphs modelsSimplicial complexes models模型的目的是再现、解释和预测系统的结构&#xff0c;最好用涉及系统两个或多个元素的交互来描述。为了考虑其输出的可…

【1971. 寻找图中是否存在路径】

来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 有一个具有 n 个顶点的 双向 图&#xff0c;其中每个顶点标记从 0 到 n - 1&#xff08;包含 0 和 n - 1&#xff09;。图中的边用一个二维整数数组 edges 表示&#xff0c;其中 edges[i] [ui, vi] …

计算机毕设Python+Vue学衡国学堂围棋社管理系统(程序+LW+部署)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

nvidia 使用

watch -n 0.5 nvidia-smi ./build/examples/openpose/openpose.bin --video examples/media/video.avi Linux CPU&GPU烤机&#xff08;压力测试&#xff09; 盛夏捷关注IP属地: 青海 0.1342021.04.14 09:50:16字数 152阅读 6,307 GPU-burn工具进行GPU烤机 下载Multi-G…

基于MATLAB的车牌识别系统设计(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

vue之非父子组件通信实现方式

在开发中&#xff0c;我们构建了组件树之后&#xff0c;除了父子组件之间的通信之外&#xff0c;还会有非父子组件之间的通信。这里主要讲两种方式&#xff1a; Provide/InjectMitt全局事件总线 1、Provide和Inject 应用场景 比如有一些深度嵌套的组件&#xff0c;子组件想要…