C语言判断四个变量相等,四个变量之间的区别

四个变量之间的区别

说出下面四个变量之间的区别

(A) int ival = 1024;

(B) int *pi1 = &ival;

(C) int *pi2 = new int(1024);

(D) int *pi3 = new int[1024];

ival为堆栈变量,其值为1024;

pi1指向ival,其值为&ival(或*pi1==1024);

pi2指向堆中分配的一个int变量,其值为1024;

pi3为堆中分配的数组,其值未初始化。

不过,我认为pi2,pi3也是堆栈中的变量,只不过,它们的值为堆中的地址。就是用堆中的(元素类型为整型,个数为1024)数组初始化了它。实际上只是把这个动态数组的首地址赋值给它了。

事实上,只要是在函数体内声明的变量,都会在堆栈中为之分配一个空间(static、extern除外),在函数体内根本无法定义或操作堆,只有通过指针对它“遥控”。

我被搞糊啦,到底是堆、栈,还是堆栈啊!我记得堆是堆,栈是栈,堆栈是两个概念和起来的说法呀!

堆栈是一种栈,每在应用程序执行之前,系统会先分配一块内存给应用程序以栈的方式使用,这就是堆栈。你说的对,栈是一种概念,应用在LIFO当中,你可以在堆或堆栈中分配一块内存以栈的方式使用。而堆其实就是系统未分配给用户的给用户使用的内存块。

[此贴子已经被作者于2004-08-29 19:41:33编辑过]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值