当前位置: 首页 > 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.gsyq.cn/news/1620050.html

相关文章:

  • 从空间转录组到PCF80:母胎界面研究如何补充蛋白功能证据?
  • 虚假信息治理新范式:跨层协同人机耦合防御体系
  • Grafana 生产环境运维与排错:日志、权限与升级实战
  • YimMenu:GTA5玩家的终极安全增强方案与游戏体验优化指南
  • 2026年7月最新全球小程序开发服务商推荐:选型标准 + 排行 + 深度评测,含零代码SAAS、AI编程、源码定制
  • DXVK终极指南:如何通过跨平台图形API转换实现Linux高性能渲染
  • 3分钟搞定抖音评论采集:零代码工具让数据分析触手可及
  • 盘锦车衣车膜手工裁剪,边角更要细看
  • 《Claude Code 工程化实战》第 7 讲 可写型子代理实战
  • IvorySQL 社区邀你参战|2026 直通乌镇开源竞技挑战赛:高质量贡献,让技术实力被看见
  • 检测 win10 硬件部分的 小脚本
  • 勒索病毒解密工具实战指南:从识别到恢复的完整流程
  • 【Springboot毕设全套源码+文档】基于Java+springboot个人健康管理系统的设计与实现(丰富项目+远程调试+讲解+定制)
  • VMware Workstation Pro 17 + Docker Desktop 4.3实战部署(企业级隔离环境配置全披露)
  • Luma API第三方服务实战:成本优化与视频生成技巧
  • KMS智能激活脚本:3步搞定Windows和Office永久激活的完整方案
  • 【CANdelaStudio-从入门到深入到实战】91 如何用Python自动化生成ODX模板(节省80%开发时间)
  • 终极免费换肤体验:R3nzSkin国服换肤工具完整指南
  • CentOS Stream 9 on VMware:实测对比VMware Tools 12.3.0 vs 12.4.1对磁盘I/O提升达47.6%,附兼容性矩阵表
  • MATLAB图表导出革命:export_fig工具箱让科研图表输出专业高效
  • VMware Tools停更预警:open-vm-tools已成生产环境标配?3个关键指标决定你是否该立即切换
  • 终极Windows和Office激活指南:5步轻松解决激活难题
  • VMware Ubuntu双网卡配置失效?立即执行这7个诊断命令,3分钟定位是vmxnet3驱动问题还是netplan YAML缩进错误
  • Tetradecapeptide (Biotinyl-Angiotensinogen (1-14) (porcine))
  • AI交易系统压力测试全攻略:从理论到实践的极限性能验证
  • 如何快速配置游戏存档:3分钟掌握SPT-AKI存档编辑器终极管理工具
  • 如何上传洛谷题目测试数据
  • PG 日报|EDB 自治 AI 数据库发布,B 树索引膨胀优化方案出炉
  • 免费解锁你的Mac鼠标超能力:3个技巧让普通鼠标秒变触控板
  • 基于深度学习的船舶识别检测系统(YOLOv8+YOLO数据集+UI界面+Python项目+模型)