LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 570|回复: 4

地址为什么不一样

[复制链接]
发表于 2004-6-17 16:24:13 | 显示全部楼层 |阅读模式
main()
{
  int a=10,b=20,c=30,*pmax,*pmin;
  printf("%d  %d  %d\n",&a,&b,&c);
  if (a>b)
  {
  pmax=&a;
  pmin=&b;
  }
  else
  {
  pmax=&b;
  pmin=&a;
  }
  if(c>*pmax) pmax=&c;
  if(c<*pmin) pmin=&c;
  printf("max=%d\nmin=%d\n",&pmax,&pmin);
}

编译结果:
-1073753712-1073753708-1073753704
max=-1073753720
min=-1073753716


为什么出来的结果max的地址应该是-1073753704,min地址是-1073753712,为什么结果不一样呢,,,这是怎么变出来的
 楼主| 发表于 2004-6-17 16:28:20 | 显示全部楼层
而且每次结果又不一样

-1073752688  -1073752684  -1073752680
max=-1073752696
min=-1073752692

-1073755904  -1073755900  -1073755896
max=-1073755912
min=-1073755908

是不是运行了之后,内存马上被释放了 ?
发表于 2004-6-17 19:23:40 | 显示全部楼层
应该是这个:
printf("max=%d\nmin=%d\n",pmax,pmin);
 楼主| 发表于 2004-6-18 00:01:43 | 显示全部楼层
那请问我上面那程序它地址变化的规律有没个办法可以预先知道 ?
发表于 2004-6-18 08:46:37 | 显示全部楼层
你那个printf("max=%d\nmin=%d\n",&pmax,&pmin);打印的是指针变量自己的地址;不是指针变量指向的地址。
搞清楚这一点你就明白了;是个比较基础的问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表