地址、指针、指针变量详解
指针和指针变量的关系
指针和指针变量是两个不同的概念,但要注意的是,通常我们叙述时会把指针变量简称为指针,实际他们含义并不一样。
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的内容。
地址、指针、引用、指针变量有什么区别
地址、指针、指针变量详解相关推荐
- this指针的用法详解
C++中this指针的用法详解 2010-11-12 20:40:45 分类: C/C++ this指针的用处: 一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果.th ...
- c语言二级指针有什么作用,C语言中二级指针的实例详解
C语言中二级指针的实例详解 C语言中二级指针的实例详解 用图说明 示例代码: #include int main(int argc, const char * argv[]) { // int a = ...
- 【C语言】小妹不懂指针和数组的关系?那就安排指针数组关系详解
目录 前言 一.什么是数组 二.什么是指针 三.指针变量的大小 四.数组和指针的关系 五.指针变量的自增自减运算 六.两个参数确定一个数组 七.字符型指针和字符型数组 总结 写在最后 前言 前段时间整 ...
- C语言(函数指针数组)详解
要了解函数指针数组,可以从三个角度来分析.所谓函数指针数组,从字面意思上来解析,函数指针数组的组成有三个点,函数,指针,数组.首先我们知道,函数指针数组,是一个数组,数组的每个元素是函数指针,也就是一 ...
- 3.堆栈指针寄存器 SP 详解
堆栈指针寄存器 SP 详解 堆栈是一种具有"后进先出"(LIFO---Last In First Out)特殊访问属性的存储结构.堆栈一般使用RAM 物理资源作为存储体,再加上LI ...
- php之static静态变量详解
php之static静态变量详解 一.总结 把局部变量改变为静态变量后是改变了它的存储方式,即改变了它的生存期. 把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围. 二.php之sta ...
- 嵌入式c语言为什么变量定义在前面,嵌入式C语言数据类型和变量详解
原标题:嵌入式C语言数据类型和变量详解 一般来讲,标准的C语言类型在嵌入式编译器中是合法的.但由于嵌入式控制器的受限环境.嵌入式c语言的变量和数据类型具有新的特征,这些特征体现在如下方面. 嵌入式C语 ...
- php的 静态变量,PHP之static静态变量详解
在看别人项目过程中,看到函数里面很多static修饰的变量,关于static修饰的变量,作用域,用法越看越困惑,所以查了下资料. static用法如下: 1.static 放在函数内部修饰变量 2.s ...
- c语言path环境变量,Windows下PATH等环境变量详解(转载)
在学习JAVA的过程中,涉及到多个环境变量(environment variable)的概念,如PATH.正确地配置这些环境变量,是能够顺利学习.开发的前提.而经常出现的问题是:有的学习者能够按照提示 ...
- Java简单类、变量详解(概念和分类、声明、命名、初始化)
1初识JAVA简单类 (1)创建第一个Java程序的具体步骤: 第一步:创建一个工程,在Package Explorer空白区域中右击New->点击Java Project->填写Proj ...
最新文章
- List和ObservableCollection的相互转化
- 将图片(路径)转换为Base64 和 将base64转换为file类型
- pythonasyncio在哪个版本好_理解Python asyncio的简洁方式
- java.nio.ByteBuffer中flip、rewind、clear方法的区别
- Java Set集合
- 小姐姐为你解析马爸爸是怎么用大数据“宰你”的
- 1.0jpa 2.0_Java EE 7之前版本替代JPA 2.1非同步持久性上下文
- java unsigined short_LDD之数据类型
- Spring进阶教程之在ApplicationContext初始化完成后重定义Bean
- 多重共线性的解决方法之——岭回归与LASSO
- freeswitch SIP信令的接收
- c语言 printf 输出 long 整型
- 2 年前端面试心路历程(字节跳动、YY、虎牙、BIGO)
- 【注意力机制集锦2】BAMSGEDAN原文、结构、源码详解
- 服务器vga接显示器无信号,显示器用HDMI转VGA接口后,无信号怎么解决
- 3DMAX的用途,游戏建模高效学习技巧,高薪职位选择
- 成都java开发学习要多久
- 百度换肤JavaScript功能
- webstorm 风扇一直响_在 Webstorm 伤透我的心后,我决定尝试 VS Code
- 多重免疫层析技术在产碳青霉烯酶肠杆菌科细菌快速鉴定中的价值