以下两种得到某一变量的地址结果有什么不同?

ariesjzj
博客专家认证
2006-02-05 11:37:47
法1:
int* iptr;
iptr = (int*)malloc(sizeof(int));

法2:
int a;
int iptr = &a;


以上两种方法最后的iptr不是都是指向一个整型的地址吗?试问有什么不同?

...全文
216 9 打赏 收藏 举报
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
qinyuanfeng 2006-02-07
有长进……
  • 打赏
  • 举报
回复
csj50 2006-02-07
法1,动态分配内存,用完后要释放。
  • 打赏
  • 举报
回复
loujing 2006-02-06
法1,需要你用free释放内存;
法2不用。
  • 打赏
  • 举报
回复
shu_yoyo 2006-02-06
法1:指向堆内存。
法2:指向栈内存。(int *iptr=&a)
  • 打赏
  • 举报
回复
mp6 2006-02-06
法1:
int* iptr;
iptr = (int*)malloc(sizeof(int));

法2:
int a;
int iptr = &a;

在法2里面你是不是少写了一个*号: int *iptr = &a;

  • 打赏
  • 举报
回复
cunsh 2006-02-06
nt iptr = &a;
-
  • 打赏
  • 举报
回复
JustNewBie 2006-02-06
那第一种为为什么还有存在的必要
它们各自的用途是什么?
---------------------------------
法2中的变量如果是在函数内部的,出了函数你还去引用它,程序就完了.
  • 打赏
  • 举报
回复
ariesjzj 2006-02-06
那第一种为为什么还有存在的必要
它们各自的用途是什么?
  • 打赏
  • 举报
回复
逸学堂 2006-02-05
以上定义的都是整行数据.
iptr = (int*)malloc(sizeof(int));
在堆上定义.
int iptr = &a;
在栈上定义
当然不相同了.
  • 打赏
  • 举报
回复
相关推荐
发帖
C语言

6.6w+

社区成员

C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
帖子事件
创建了帖子
2006-02-05 11:37
社区公告
暂无公告