C++形参、实参地址,局部变量、全局变量指针理解

本文深入探讨了局部变量的概念,包括其作用范围、生命周期及与全局变量的区别,并详细解析了C语言中指针的使用,阐述了如何通过指针操作变量地址。

来源:算法竞赛经典第二版P122

函数**(包括main函数)的形参和在该函数里定 义的变量都被称为该函数的局部变量**(local variable)。不同函数的局部变量相互独 立,即 无法访问其他函数的局部变量。需要注意的是,局部变量的存储空间是临时分配的,函数执 行完毕时,局部变量的空间将被释放,其中的值无法保留到下次使用。与此对应的是全局变 量(global variable):此变量在函数外声明,可以在任何时候,由任何函数访问。需要注意 的是,应该谨慎使用全局变量。(**注意:**若定义一个数组,若是全局变量,则可以不用初始化;若是定义局部变量,一定要初始化为0,否则后面用到会报错)

调用栈描述的是函数之间的调用关系。它由多个栈帧(Stack Frame)组成,每个栈帧对 应着一个未运行完的函数。栈帧中保存了该函数的返回地址和局部变量,因而不仅能在执行 完毕后找到正确的返回地址,还很自然地保证了不同函数间的局部变量互不相干——因为不 同函数对应着不同的栈帧

C语言的变量都是放在内存中的,而内存中的每个字节都有一个称为地址 (address)的编号。每个变量都占有一定数目的字节(可用sizeof运算符获得),其中第一 个字节的地址称为变量的地址

指针:

用int* a声明的变量a是指向int型变量的指针。赋值a = &b的含义是把变量 b的地址存放在指针a中,表达式*a代表a指向的变量。
** *a是指“a指向的变量”,而不仅是“a指向的变量所拥有的值”。**理解这一点相当重 要。例如,a = a + 1就是让a指向的变量自增1。甚至可以把它写成(a)++。注意不要写 成a++,因为“++”运算符的优先级高于“取内容”运算符“”,实际上会被解释成(a++)。

指针也是一个 变量,只不过类型是“指针”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值