在C中指针和引用都是用于间接访问变量的方式但它们在底层实现和使用上有本质的区别。一、指针1、定义方式指针是一个变量其值为另一个变量的地址这意味着指针本身存储的是内存地址。int var 10; int* ptr var; // ptr是一个指向int类型变量的指针2、空值指针可以有nullptrC11及以后版本或NULL在C98中作为空值。int* ptr nullptr; // C11及以后 // 或者 int* ptr NULL; // C983、可以改变指向指针的值即它所指向的地址可以在程序运行时被改变指向另一个变量或地址。int x 20; ptr x; // ptr现在指向x4、解引用使用*操作符可以访问指针所指向的变量的值。int value *ptr; // value现在是205、用途指针通常用于动态内存管理如使用new和delete或者在需要操作地址或进行低级内存操作时使用。二、引用1、定义方式引用在定义时必须被初始化并且一旦被初始化之后它就一直引用那个变量不能改变引用的目标即不能让一个引用引用另一个变量。int var 10; int ref var; // ref是对var的引用2、空引用引用不能为空必须在定义时被初始化。int ref; // 错误引用必须初始化3、不可变指向一旦一个变量被引用就不能改变它引用的目标。int x 20; ref x; // 错误不能改变ref引用的目标4、使用场景引用主要用于函数参数传递特别是当你想要函数修改调用者的变量但又不想复制整个对象时。它还可以增加代码的可读性使得变量的别名更加直观。void func(int x) { x x 1; // 直接修改原变量 }三、总结1、指针提供了灵活性可以改变其指向的地址适用于动态内存管理和需要底层操作的情况。2、引用提供了不可变的别名使得代码更加直观和易于理解适用于参数传递以避免复制大型对象。3、选择使用指针还是引用取决于具体的需求和上下文。4、在实际编程中合理地选择使用它们可以提高代码的效率和可读性。C 中引用和指针的详细区别https://blog.csdn.net/qq_40844444/article/details/145294231C 指针和引用的区别https://blog.csdn.net/qq_58271100/article/details/149727436C 引用详解引用和指针的区别按值传递按引用传递和按指针传递的区别https://blog.csdn.net/pure_dreams/article/details/81217392C 参数传递详解值传递、指针传递、引用传递https://blog.csdn.net/qq_22734027/article/details/145969095C语言面试篇指针和引用https://blog.csdn.net/2503_90903957/article/details/157210099C 中指针和引用的区别https://www.runoob.com/w3cnote/cpp-difference-between-pointers-and-references.htmlAtCoder Beginner Contest 361https://blog.csdn.net/dllglvzhenfeng/article/details/144401882AtCoder Beginner Contest ABC-3612024.12.17https://blog.csdn.net/dllglvzhenfeng/article/details/144542009AtCoder Beginner Contest 362https://blog.csdn.net/dllglvzhenfeng/article/details/147540521AtCoder Beginner Contest 363https://blog.csdn.net/dllglvzhenfeng/article/details/148495117AtCoder Beginner Contest 364https://blog.csdn.net/dllglvzhenfeng/article/details/148495823AtCoder Beginner Contest 365https://blog.csdn.net/dllglvzhenfeng/article/details/148512601AtCoder Beginner Contest 366https://blog.csdn.net/dllglvzhenfeng/article/details/148512922AtCoder Beginner Contest 367https://blog.csdn.net/dllglvzhenfeng/article/details/148528928AtCoder Beginner Contest 368https://blog.csdn.net/dllglvzhenfeng/article/details/148529438AtCoder Beginner Contest 369https://blog.csdn.net/dllglvzhenfeng/article/details/148533573AtCoder Beginner Contest 370https://blog.csdn.net/dllglvzhenfeng/article/details/148534963