当前位置: 代码迷 >> C语言 >> 请问.我的程序为什么不能运行?
  详细解决方案

请问.我的程序为什么不能运行?

热度:277   发布时间:2006-08-24 21:14:53.0
请问.我的程序为什么不能运行?

#include <stdio.h>

void tryit (int * a)
{
printf("%d",a);
}

void main()
{
int *a;
*a=3;
tryit(a);

}

这个程序编译后没有错误,但一运行就说什么内存不能读什么的,请问各位大虾这是怎么回事?

搜索更多相关的解决方案: 运行  

----------------解决方案--------------------------------------------------------

你程序目的是什么?要打印a的地址吗?


----------------解决方案--------------------------------------------------------

int *a;
*a = 3;
?????
a 指到哪奄了


----------------解决方案--------------------------------------------------------
以下是引用yeshirow在2006-8-25 8:15:21的发言:

int *a;
*a = 3;
?????
a 指到哪奄了

?他的书写有问题么?
他的程序在我这能正常运行啊!
----------------解决方案--------------------------------------------------------

以下是引用nihao251110在2006-8-25 8:14:09的发言:
sdfsdf

斑竹!是不是该让这小子禁言拉!

----------------解决方案--------------------------------------------------------

指针先指向确定的地址然后才能引用指针指向的变量。


----------------解决方案--------------------------------------------------------


那要是让你改怎么改?


----------------解决方案--------------------------------------------------------
以下是引用guishenling在2006-8-24 21:14:53的发言:

#include <stdio.h>

void tryit (int * a)
{
printf("%d",a);
}

void main()
{
int *a;
*a=3;
tryit(a);

}

这个程序编译后没有错误,但一运行就说什么内存不能读什么的,请问各位大虾这是怎么回事?

int a=3;
tryit(&a);
or
int b,*a=&b;
*a=3;


----------------解决方案--------------------------------------------------------
以下是引用soft_wind在2006-8-25 8:29:25的发言:

int a=3;
tryit(&a);
or
int b,*a=&b;
*a=3;

你的是VC么?
好象WIN TC 和TC都不用!
在编译的时候会自动为地址a解决居住问题!


----------------解决方案--------------------------------------------------------

是吗?您那样*a指向的地址是不确定的,并不是自动为地址a解决居住问题,而是恰好这个地址是闲置的,让您正好可以运行成功而不使系统崩溃.
标准C明确规定要先把指针指向确定的空间。


----------------解决方案--------------------------------------------------------
  相关解决方案