指针和指针变量的关系

指针和指针变量是两个不同的概念,但要注意的是,通常我们叙述时会把指针变量简称为指针,实际他们含义并不一样。


p、*p 和 &p的区别
  • * 取值运算符

  • & 取地址运算符

p是指针变量,它存储的是另一个同类型变量的地址

*p表示p所指向的变量的值(即p存放地址对应变量的值。如下图,p存放的是变量i的地址,那么*p取的就是变量i的值)。所以*p等价于a,即*p=a

&p表示指针变量p本身的地址(注意指针变量的地址和指针变量的值的区别。如下图,指针变量p的值是变量i的地址;指针变量p的地址是其所在内存存储单元的地址)。所以p等价于&a,即p = &a 或 &a = p

如下图中,1001是指针变量p的地址,1007是变量i的地址。指针变量存放的是变量i的地址,也就是指针变量的值。所以p=1007,*p=5,&p=1001

注意:p是指针变量,存放的是地址(内存单元的编号)。

  • 不能给指针变量赋数据值,如p = 100,这是错误的,无法通过编译;
  • 只能赋地址值,如p = &i;

注意:*p表示的是数据值,即p指针指向地址的内容。

  • 不能给*p赋地址值,如*p = &i; 这是错误的,无法通过编译;
  • *p表示的是数据值,所以只能赋数据值。如*p = 100;或将地址值 &i 强转成数据值,如*p = (int)&i;

星号*的用途

p是指针变量,*表示这是一个指针,int表示该指针变量所指向的数据的类型。 定义指针变量时的* 和 使用指针变量时的*意义完全不同。。

  • 指针定义中的*,表示定义一个指针变量。(如int *p;表示定义一个int类型的指针变量)

  • 使用指针变量时的*,表示取值运算符。(如*p,表示获取指针变量p指向地址的内容)


int *p; 和 int **p; 解析
  • int *p;表示定义一个指向int类型的指针变量p

  • int **p; 表示定义一个指向int *类型的指针变量


引用

局部变量(方法内的变量),在方法执行完毕后,就会被释放。

  • fun1()和fun()2没有修改指针变量L的内容

  • fun()3是传引用调用,会修改实参的内容。&L表示取指针变量L的地址,拿到指针变量L的地址,就可以修改变量的内容了

什么是引用?

  • 引用是一个变量的别名,本身不单独分配自己的内存空间,而是与该变量共享一块内存空间。所以可以通过引用来修改变量的值。如下图的L3和L共享一块内存空间,可以通过L3来修改L的内容。


地址、指针、引用、指针变量有什么区别

地址、指针、指针变量详解相关推荐

  1. this指针的用法详解

    C++中this指针的用法详解 2010-11-12 20:40:45 分类: C/C++ this指针的用处: 一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果.th ...

  2. c语言二级指针有什么作用,C语言中二级指针的实例详解

    C语言中二级指针的实例详解 C语言中二级指针的实例详解 用图说明 示例代码: #include int main(int argc, const char * argv[]) { // int a = ...

  3. 【C语言】小妹不懂指针和数组的关系?那就安排指针数组关系详解

    目录 前言 一.什么是数组 二.什么是指针 三.指针变量的大小 四.数组和指针的关系 五.指针变量的自增自减运算 六.两个参数确定一个数组 七.字符型指针和字符型数组 总结 写在最后 前言 前段时间整 ...

  4. C语言(函数指针数组)详解

    要了解函数指针数组,可以从三个角度来分析.所谓函数指针数组,从字面意思上来解析,函数指针数组的组成有三个点,函数,指针,数组.首先我们知道,函数指针数组,是一个数组,数组的每个元素是函数指针,也就是一 ...

  5. 3.堆栈指针寄存器 SP 详解

    堆栈指针寄存器 SP 详解 堆栈是一种具有"后进先出"(LIFO---Last In First Out)特殊访问属性的存储结构.堆栈一般使用RAM 物理资源作为存储体,再加上LI ...

  6. php之static静态变量详解

    php之static静态变量详解 一.总结 把局部变量改变为静态变量后是改变了它的存储方式,即改变了它的生存期. 把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围. 二.php之sta ...

  7. 嵌入式c语言为什么变量定义在前面,嵌入式C语言数据类型和变量详解

    原标题:嵌入式C语言数据类型和变量详解 一般来讲,标准的C语言类型在嵌入式编译器中是合法的.但由于嵌入式控制器的受限环境.嵌入式c语言的变量和数据类型具有新的特征,这些特征体现在如下方面. 嵌入式C语 ...

  8. php的 静态变量,PHP之static静态变量详解

    在看别人项目过程中,看到函数里面很多static修饰的变量,关于static修饰的变量,作用域,用法越看越困惑,所以查了下资料. static用法如下: 1.static 放在函数内部修饰变量 2.s ...

  9. c语言path环境变量,Windows下PATH等环境变量详解(转载)

    在学习JAVA的过程中,涉及到多个环境变量(environment variable)的概念,如PATH.正确地配置这些环境变量,是能够顺利学习.开发的前提.而经常出现的问题是:有的学习者能够按照提示 ...

  10. Java简单类、变量详解(概念和分类、声明、命名、初始化)

    1初识JAVA简单类 (1)创建第一个Java程序的具体步骤: 第一步:创建一个工程,在Package Explorer空白区域中右击New->点击Java Project->填写Proj ...

最新文章

  1. List和ObservableCollection的相互转化
  2. 将图片(路径)转换为Base64 和 将base64转换为file类型
  3. pythonasyncio在哪个版本好_理解Python asyncio的简洁方式
  4. java.nio.ByteBuffer中flip、rewind、clear方法的区别
  5. Java Set集合
  6. 小姐姐为你解析马爸爸是怎么用大数据“宰你”的
  7. 1.0jpa 2.0_Java EE 7之前版本替代JPA 2.1非同步持久性上下文
  8. java unsigined short_LDD之数据类型
  9. Spring进阶教程之在ApplicationContext初始化完成后重定义Bean
  10. 多重共线性的解决方法之——岭回归与LASSO
  11. freeswitch SIP信令的接收
  12. c语言 printf 输出 long 整型
  13. 2 年前端面试心路历程(字节跳动、YY、虎牙、BIGO)
  14. 【注意力机制集锦2】BAMSGEDAN原文、结构、源码详解
  15. 服务器vga接显示器无信号,显示器用HDMI转VGA接口后,无信号怎么解决
  16. 3DMAX的用途,游戏建模高效学习技巧,高薪职位选择
  17. 成都java开发学习要多久
  18. 百度换肤JavaScript功能
  19. webstorm 风扇一直响_在 Webstorm 伤透我的心后,我决定尝试 VS Code
  20. 多重免疫层析技术在产碳青霉烯酶肠杆菌科细菌快速鉴定中的价值

热门文章

  1. 简单的提取图片中文字的教程
  2. O2O适合哪几个行业 O2O有哪些功能?
  3. ML307S使用MQTT连接阿里云---动态注册连接教程
  4. python实验指导书_Python实验指导书
  5. 稻盛和夫语录100条
  6. 大神驾到 | 游戏UI赏析之—全面战争:三国
  7. 全场光学相干扫描干涉仪
  8. design短语的用法总结_短语用法总结
  9. WinMgmt.exe 产生错误,会被Windows关闭
  10. Godot Engine:Hello Godot 4.0