一、C 指针简单来说指针是一个地址其指向存储某一个数据的存储地址。此外还有一个指针变量的概念指针变量是一种特殊性质的变量。指针变量是把地址存放在一个变量中然后通过先找出地址变量 中的值一个地址再由此地址找到最终要访问的变量的方法这就是指针变量及其访问方法而地址变量就是指针。定义的语法形式存储类型名 数据类型 *指针变量名赋值的语法形式存储类型 数据类型 *指针名 初始地址值#includeiostream 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;//修改p2p1不变 */ //引用类型 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; } } }以上不足请老师、同行大佬批评指正。
一文说清 C++指针与C#引用类型
一、C 指针简单来说指针是一个地址其指向存储某一个数据的存储地址。此外还有一个指针变量的概念指针变量是一种特殊性质的变量。指针变量是把地址存放在一个变量中然后通过先找出地址变量 中的值一个地址再由此地址找到最终要访问的变量的方法这就是指针变量及其访问方法而地址变量就是指针。定义的语法形式存储类型名 数据类型 *指针变量名赋值的语法形式存储类型 数据类型 *指针名 初始地址值#includeiostream 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;//修改p2p1不变 */ //引用类型 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; } } }以上不足请老师、同行大佬批评指正。