CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

帮我解释一下,,,,指针变量。

楼主noall()2001-11-09 14:00:00 在 C/C++ / C语言 提问

#include   "stdio.h"  
  ch(int   *flag)  
  {  
                *flag=0;  
                printf("%d\n",*flag);  
  }  
  void   main()  
  {  
  int   *flag,i;  
  *flag=1;  
                  printf("\n");  
  ch(flag);  
  printf("%d\n",*flag);  
  }  
  这样子传递,运行没错,但总觉得哪里有错,请指点 问题点数:20、回复次数:8Top

1 楼findcaiyzh(秋心)回复于 2001-11-09 14:08:40 得分 0

其实你这样可以用reference   来传递就是&  
  ch(int&   flag)  
  {  
          flag   =   0;  
  }  
  void   main()  
  {  
          int   flag   =   1;  
          printf("before   change   is   %d",flag);  
          ch(flag);  
          printf("after   change   is   %d",flag);  
   
  }  
  Top

2 楼ifrank(天蓝)回复于 2001-11-09 14:16:36 得分 0

没错嘛.指针是值传递.  
   
  ch(int   *flagINfun)  
  {  
              *flagINfun=0;  
              printf("%d\n",*flagINfun);  
  }  
  void   main()  
  {  
  int   *flag,i;  
  *flag=1;  
                  printf("\n");  
  ch(flag);  
  printf("%d\n",*flag);  
  }  
   
  ---------------                                     ------------------  
  |   flag   |   ADD     |----------------->|   *flag   |   1   ->   0   |  
  ---------------                                     ------------------  
   
  ch(   flag   )将flag的值ADD传入ch()体内,即:flahINfun=ADD  
  Top

3 楼chxr(sxl)回复于 2001-11-09 14:24:45 得分 5

int   *flag,i;  
  *flag=1;  
  这样写对么?flag=?   还是应该看看书喽     :)                 Top

4 楼jerry_baimor(崇拜starfish)回复于 2001-11-09 15:05:20 得分 5

*flag=1;============>>>>>>>>>>>>>>>>>这么行???  
  flag   is   a   pointer,which   has   to   be   initialized   to   pointing   to   some   variable   before   it   can   be   used!!!!  
  *flag=1   is   very   dangerous,   lest   flag   should   store   some   arbitary   address   of   32   bytes.  
   
  给分!!  
                  Top

5 楼noall()回复于 2001-11-09 16:15:28 得分 0

大虾:就是不知道才问啊。  
  你们的意思就是说:flag这个是不不确定的内存地址吗?Top

6 楼lqqchen(李过)回复于 2001-11-09 16:24:12 得分 5

最大的问题是flag是个指针,你在使用它之前应该初始化.要么指向一个静态的整形变量,或者动态分配一个整形变量的空间给它,然后再使用,再释放.  
  你现在的程序让你觉得不放心就是这个原因.  
  最好是写代码的时候写规范一点.Top

7 楼kingfish(工作很忙,很少来csdn...)回复于 2001-11-09 16:29:11 得分 5

*flag   =1;  
  就是把1填到flag所指的地址空间中  
  但你的flag指向哪里?  
   
  用之前应该先给他个值啊  
  如  
    int   i,a[3];  
      flag   =   &i;  
      flag   =   a;   Top

8 楼ifrank(天蓝)回复于 2001-11-09 16:33:10 得分 0

没注意,呵呵   好久没亲手写程序了;)Top

相关问题

  • 指针变量问题
  • 指针变量的问题
  • 一个类COperation中有指针类型的变量。使用COperation* pOperation实例化后,怎么访问pOperation的指针变量,高手帮忙写几行代码?
  • 指针变量如何赋初值?
  • 关于指针到变量的问题
  • 小问题:局部指针变量
  • 临时指针变量的问题----!!!!
  • 关于指针和变量的区别
  • 局部变量传指针问题
  • 通过结构指针变量赋值

关键词

  • 指针
  • flag
  • 变量
  • flaginfun
  • ch
  • 传递
  • printf
  • 就是
  • 应该
  • void main

得分解答快速导航

  • 帖主:noall
  • chxr
  • jerry_baimor
  • lqqchen
  • kingfish

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo