首页 > 编程语言 >c/c++指针中 * 和 & 的区别与联系

c/c++指针中 * 和 & 的区别与联系

时间:2024-03-07 19:58:52浏览次数:42  
标签:变量 指向 区别 px c++ 地址 操作符 指针

在C语言中,*&是两个非常基础但功能相反的操作符,它们分别是解引用(dereference)操作符和取地址(address-of)操作符。

&(取地址操作符)

  • 用途:&操作符用来获取变量的内存地址。
  • 示例:假设有一个整型变量int x = 10;,则&x表示获取变量x的内存地址。如果你有一个指针变量想要存储变量x的地址,可以这样做:int *px = &x;

*(解引用操作符)

  • 用途:*操作符用来访问指针指向的内存地址中存储的值,即获取该地址上的数据。
  • 示例:继续上面的例子,现在px是一个指针,指向x的地址,*px就用来获取px指向的地址上存储的值,即x的值10。如果你想通过指针改变x的值,可以这样做:*px = 20;,这样x的值就变成了20。

关系和区别

  • 关系:&*是相互补充的。&用于获取变量的地址,而*用于通过地址访问或修改该地址处的数据。
  • 区别:&操作符作用于变量时,得到该变量的地址;*操作符作用于指针时,得到指针所指向的值。

使用场景

  • &常用于初始化指针,使指针指向某个变量的地址。
  • *被用于通过指针间接访问和修改其指向地址的值。

理解这两个操作符的区别和联系对于深入理解C语言中的指针概念至关重要。

标签:变量,指向,区别,px,c++,地址,操作符,指针
From: https://www.cnblogs.com/yesno233233/p/18059615

相关文章

  • (笔记)Linux信号(signal) 机制和信号量(semaphore)机制的区别
     字面上相似,但是本质上存在巨大的差别! 一、Linux信号(signal)机制signal,又简称为信号(软中断信号)用来通知进程发生了异步事件。原理:一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是进程间通信机制中唯一的异步通信机制,一个进程不必通过任何操作来......
  • CUDA指针数组Kernel函数
    技术背景在前面的一篇文章中,我们介绍了在C++中使用指针数组的方式实现的一个不规则的二维数组。那么如果我们希望可以在CUDA中也能够使用到这种类似形式的不规则的数组,有没有办法可以直接实现呢?可能过程会稍微有一点麻烦,因为我们需要在Host和Device之间来回的转换,需要使用到很多C......
  • 什么是ConcurrentHashMap?不同JDK下ConcurrentHashMap的区别?
    什么是ConcurrentHashMap?不同JDK下ConcurrentHashMap的区别?  一、HashMap线程安全  我们知道,在并发情况下,使用HashMap会有线程安全的问题,那么如何避免呢?  想要避免Hashmap的线程安全问题有很多办法,比如改用HashTable或者Collections.synchronizedMap  但是,这两者......
  • promethues 的label和metrics有什么区别:labels 用于数据监控指标的筛选,到底要监控哪
    在Prometheus中,Label和Metrics是两个核心概念,它们在监控和度量方面扮演不同的角色:Label(标签): labels用于数据监控指标的筛选,到底要监控哪些指标到promethuesLabels是用于标识和区分时间序列数据的键值对。每个时间序列数据都可以带有多个不同的标签,用来描述该数据的......
  • this指针的使用
    c++提供特殊的对象指针,也就是this指针,this指针指向被调用的成员函数所属的对象this指针是隐含每一个非静态成员函数内的一种指针this函数不需要定义,直接使用即可 this指针的用途:当形参和成员变量同名时,可用this指针来区分在类的非静态成员函数中返回对象本身,可使用return......
  • c#与java之间的区别盘点
    原文链接:http://www.mobiletrain.org/about/BBS/119467.htmlhttps://blog.csdn.net/clpig0125/article/details/50774628C#(CSharp)是Microsoft开发的一种面向对象的编程语言,而Java是由SunMicrosystems开发的一种面向对象的编程语言。虽然它们都是面向对象的编程语言,但它们之......
  • SD-WAN中二层组网与三层组网的区别
    前言随着企业网络需求的不断增长和变化,SD-WAN作为一种现代网络技术,为企业提供了更灵活、高效的网络解决方案。在SD-WAN中,二层组网和三层组网是两种常见的部署模型,它们有着各自的特点和适用场景。本文将深入探讨SD-WAN二层组网与三层组网的区别以及它们在不同情境下的优势。SD-WA......
  • sqlserver和mysql区别
    1.数据库管理系统SQLServer是由微软公司开发的关系型数据库管理系统,适用于Windows操作系统。而MySQL则是由瑞典MySQL公司开发的,后来被Oracle公司收购,适用于多个操作系统,包括Windows、Linux和UNIX。2.许可证和成本SQLServer是商业产品,需要购买许可证才能使用。它的价格相对......
  • C++语言代码开发示例-身份证实名认证接口
    实名认证API实时联网核验个人身份信息与所持身份证件人员的一致性,可满足不同应用场景的不同实名认证需求,如身份证号+姓名核验、身份证号+姓名+人像核验、身份证号+姓名+证件人像+现场人像核验等,有助于推动诚信网络环境建设,降低利用网络进行违法犯罪的可能性,防止纠纷和诈骗,确保消费......
  • C++ 萃取机 Iterator Traits
    IteratorTraits萃取出Iterator的性质:迭代器种类、迭代器所指数据类型、迭代器距离类型、迭代器所指数据引用、迭代器所指数据指针。根据不同的迭代器种类可以采取不同的算法策略。但是用iter::interator_categotry、iter::value_type、iter::pointer...就可以访问到迭代器的......