| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 972 人关注过本帖
标题:请问.我的程序为什么不能运行?
只看楼主 加入收藏
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 

main()
{
int *f;

printf("%d\n",f);

getch();
}
显示
12803

main()
{
int *f;

printf("%d\n",f);

*f=9;

getch();
}
显示:
798

说明肯定是编译器的问题!
还有就是都显示了地址
说明系统已经给他分配了空间 所以系统不应该崩溃啊!

2006-08-25 08:52
yeshirow
Rank: 4
等 级:贵宾
威 望:10
帖 子:854
专家分:0
注 册:2006-6-8
收藏
得分:0 

真佩服你會使用未初始化的指針..
看下面的程式如果能通過編譯, 那真的是太好了

struct ABC
{
int a;
};

int main()
{
ABC *a;
printf("%d\n", a->a);
return 0;
}


原來朋友仔感情再天真, 亦是我永遠也會愛惜的人, 明日愛他人, 也記住學會不要緊; 原來朋友比戀人更高分, 亦讓我開始懂得不記恨, 若大家都敏感, 我更要永遠記得拒絕再因小事怪人, 爲何沒有這條校訓...Twins-朋友仔 MCSD Training
2006-08-25 08:55
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 

当然通不过
你是什么意思?
你写错了?:
struct ABC
{
int a;
};

int main()
{
struct ABC *a;
printf("%d\n", a->a);
return 0;
}

还是故意的?

要是写错了,我只能告诉你我的能编译!!!

2006-08-25 09:02
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 
您给他一个错误的例子,他能编译岂不怪哉?
struct ABC ====>ABC

对不礼貌的女生收钱......
2006-08-25 09:04
yeshirow
Rank: 4
等 级:贵宾
威 望:10
帖 子:854
专家分:0
注 册:2006-6-8
收藏
得分:0 

看來是我沒有學到東西啊,
ABC *a;
你給我改爲了 struct ABC *a;

我沒有說這是錯誤的, 但 struct 一定要寫的嗎

真的能通過嗎...


原來朋友仔感情再天真, 亦是我永遠也會愛惜的人, 明日愛他人, 也記住學會不要緊; 原來朋友比戀人更高分, 亦讓我開始懂得不記恨, 若大家都敏感, 我更要永遠記得拒絕再因小事怪人, 爲何沒有這條校訓...Twins-朋友仔 MCSD Training
2006-08-25 09:05
yeshirow
Rank: 4
等 级:贵宾
威 望:10
帖 子:854
专家分:0
注 册:2006-6-8
收藏
得分:0 
o, 原來是 a 的問題, 我在編輯時是寫
ABC *pp; 的

原來朋友仔感情再天真, 亦是我永遠也會愛惜的人, 明日愛他人, 也記住學會不要緊; 原來朋友比戀人更高分, 亦讓我開始懂得不記恨, 若大家都敏感, 我更要永遠記得拒絕再因小事怪人, 爲何沒有這條校訓...Twins-朋友仔 MCSD Training
2006-08-25 09:07
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 

是因为你没写:typedef

typedef struct {
int a;
}ABC;

int main()
{
ABC *a;
printf("%d\n", a->a);
getch();
return 0;
}

我的确编译通过了!
发誓!

2006-08-25 09:10
guishenling
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-8-24
收藏
得分:0 

感谢各位的热心帮助!
可能我当时没有把我的意思表示清楚吧!
我是想问当程序是
#include <stdio.h>

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

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

}
时会运行出错,但我要改成:
#include <stdio.h>

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

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

}
就可以了.
为什么在用指针当参数时非得这样用呢?

[此贴子已经被作者于2006-8-25 10:24:07编辑过]

2006-08-25 10:23
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 

还是楼上争的问题。
1.指针必须先指向确定的地址才能用;
2.如果楼主想保留主函数的指针,可以这么改:
#include <stdio.h>

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

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

}
函数的形参和实参地址不同。


对不礼貌的女生收钱......
2006-08-25 10:40
快速回复:请问.我的程序为什么不能运行?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014797 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved