当前位置: 首页 > news >正文

一文说清 C++指针与C#引用类型

一、C++ 指针

简单来说,指针是一个地址,其指向存储某一个数据的存储地址。此外,还有一个指针变量的概念,指针变量是一种特殊性质的变量。指针变量是把地址存放在一个变量中,然后通过先找出地址变量 中的值(一个地址),再由此地址找到最终要访问的变量的方法,这就是指针变量及其访问方法,而地址变量就是指针。

定义的语法形式:

存储类型名 数据类型 *指针变量名

赋值的语法形式:

存储类型 数据类型 *指针名 = 初始地址值;

#include<iostream> using namespace std; int main() { /*非指针 int a = 10; int pa = a; //a赋值给pa pa = 20;//修改pa,a不会改变 */ int a = 10; int *pa;//定义指针 pa = &a;//a的地址赋值给pa *pa = 20;///修改*pa,a随着pa一起变化 cout << "a=" << a << endl; //a = 20 }

二、C#引用类型

在C#中,引用类型(Reference Type)与值类型(Value Type)是两种基本的数据类型分类。引用类型包括类(Class)、接口(Interface)、数组(Array)等,而值类型包括结构体(Struct)、枚举(Enum)、基本数值类型如int、float等

1.判定数组为引用类型

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp2 { internal class Program { static void Main(string[] args) { /* 值类型 int a = 8; int b = a; b = 100; //把100赋值给b,不会引起a值变化 Console.WriteLine(a); */ //引用类型 int[] a = { 1, 2, 3 }; int[] b = a;//a赋值给b,a、b指向同地址 b[0] = 100;//把100赋值给b[0],会引起a[0]值变化 Console.WriteLine(a[0]); } } }

2.判定类为引用类型

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp2 { internal class Program { static void Main(string[] args) { /*值类型 int p1 = 10; int p2 = p1; p1赋值给p2,p1、p2指向堆里不同地址 p2 = 20;//修改p2,p1不变 */ //引用类型 Person p1 = new Person(); p1.Name = "张三"; p1.Age = 25; Person p2 = p1;//p1赋值给p2,p1、p2指向栈里同一地址 p2.Name = "李四";//修改p2值,p1会变化 p2.Age = 20;//通过p2可改p1 Console.WriteLine($"姓名:{p1.Name},年龄:{p1.Age}" ); } } class Person { public string Name { get; set; } public int Age { get; set; } } }

以上不足,请老师、同行大佬批评指正。

http://www.jsqmd.com/news/1108079/

相关文章:

  • 从报错0x0000007B到桌面秒进:VMware安装macOS的5个隐藏参数与BIOS级调优技巧(实测提升启动速度300%)
  • comfyui 文生图
  • 【VMware Tools安装故障终极指南】:20年虚拟化专家亲授5大核心原因与秒级修复方案
  • 从空间转录组到PCF80:母胎界面研究如何补充蛋白功能证据?
  • 简单三步:用鼠标点击控制VLC播放暂停的完整指南
  • 从WordPress插件命令注入到Kubernetes容器逃逸的完整渗透测试实战
  • Kali Linux在VMware中无法联网、显卡失灵、复制粘贴失效?(2024最新兼容性修复手册)
  • C语言 指针的理解 — 3
  • 虚假信息治理新范式:跨层协同人机耦合防御体系
  • Grafana 生产环境运维与排错:日志、权限与升级实战
  • Grafana 告警历史与复盘:使用 Loki 和 Tempo 追踪告警链路
  • 什么是选择自己适合的赛道?
  • 【JVS更新日志】APS排产、JVS规则引擎、JVS低代码开发套件、在线白板(插件)等7.1更新说明!
  • 实体生意抖音获客起号指南,让你持续获客
  • YimMenu:GTA5玩家的终极安全增强方案与游戏体验优化指南
  • 2026年7月最新全球小程序开发服务商推荐:选型标准 + 排行 + 深度评测,含零代码SAAS、AI编程、源码定制
  • 终极GTA5增强工具:YimMenu完全防护与游戏体验提升指南
  • 2026找搭子防骗全攻略!高效解锁纯净靠谱社交
  • 一键智能激活:KMS_VL_ALL_AIO让你的Windows和Office永久激活无忧
  • PVZ Toolkit:植物大战僵尸终极修改器的完全掌控指南
  • 3分钟搞定抖音评论采集:零代码工具让数据分析触手可及
  • VMware Tools与open-vm-tools深度对比(2024 LTS版实测数据全公开)
  • 22-杨逢昌:制造业车间6S常态化维稳方案——三级检查节拍标准化管理体系
  • DXVK终极指南:如何通过跨平台图形API转换实现Linux高性能渲染
  • 我把一坨原始素材扔进文件夹,对AI说了句话,它直接还我一条成片
  • 为什么口腔组织微环境研究需要空间单细胞蛋白组?
  • KMS_VL_ALL_AIO:Windows与Office激活的一站式解决方案
  • 盘锦车衣车膜手工裁剪,边角更要细看
  • AI编程助手部署避坑指南:从环境配置到稳定运行
  • 终极.NET逆向工具:dnSpy完整指南与7个实战技巧