帮我解释一下,,,,指针变量。
#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




