c++ std::cout问题

软件和网站开发以及相关技术探讨
回复
zzh.org
帖子: 46
注册时间: 2007-08-14 14:33

c++ std::cout问题

#1

帖子 zzh.org » 2009-06-24 10:30

小弟最近遇到一个问题,如下
主程序a.cpp
#include "b.h"
int main()
{
int *abc,*abcd;
*abc=123;
abcd=c(abc);
std::cout<<"s"<<*abcd;
return 0;
}

b.h文件
#include <iostream>
int *c(int *a);

b.cpp文件
#include "b.h"
int *c(int *a)
{
int *b;
b=a;
std::cout<<"bֵ:"<<*b<<"\n";
return b;
}
我在WINDOWS上用tdm gcc 4.4.0版本编译。
b.h b.cpp两个文件里的函数可以顺利执行输出信息,只有a.cpp里的std::cout不能输出而且还导致程序崩溃。
症状是
std::cout<<"s"<<*abcd;这行,如果这样写,会让程序崩溃,弹出一个对话框,上面写:“a.exe 遇到问题需要关闭。我们对此引起的不便表示抱歉。“但如果改成std::cout<<*abcd;就可以不让程序崩溃还能输出信息,如果改成std::cout<<*abcd<<"s";也没问题。
各位高手,这个问题怎么办呢?谢谢了。
头像
peachcolor
帖子: 898
注册时间: 2006-05-20 14:03

Re: c++ std::cout问题

#2

帖子 peachcolor » 2009-06-24 10:47

你确信去掉“s”就不崩溃了?
按理说你*abc=123那一行已经出segmentation fault了,需要在前面加上abc=new int;
zzh.org
帖子: 46
注册时间: 2007-08-14 14:33

Re: c++ std::cout问题

#3

帖子 zzh.org » 2009-06-24 13:12

去掉<<"s"或者放在最后可以编译通过,顺利执行,就是放前面,能编译通过,但无法执行。
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

Re: c++ std::cout问题

#4

帖子 BigSnake.NET » 2009-06-24 13:20

zzh.org 写了:去掉<<"s"或者放在最后可以编译通过,顺利执行,就是放前面,能编译通过,但无法执行。
编译通过顺利执行不代表就是对的
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
imlazy
帖子: 136
注册时间: 2006-10-29 10:49
来自: Shanghai, China

Re: c++ std::cout问题

#5

帖子 imlazy » 2009-06-24 22:50

代码: 全选

int* abc;
*abc=123;
您怎么能没分配空间就直接操作指针!
头像
CGer
帖子: 210
注册时间: 2009-06-21 19:38
来自: CUMT

Re: c++ std::cout问题

#6

帖子 CGer » 2009-06-25 13:16

这个program好像没什么significant吧 :em06

代码: 全选

sudo apt-get install girlfriend
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
有一些软件包无法被安装。
下列的信息可能会对解决问题有所帮助:
下列的软件包有不能满足的依赖关系:
girlfriend: 依赖: house但是它将不会被安装
girlfriend: 依赖: car但是它将不会被安装
house,car: 依赖: money但是它将不会被安装
E: 无法安装的软件包
[/b]
zzh.org
帖子: 46
注册时间: 2007-08-14 14:33

Re: c++ std::cout问题

#7

帖子 zzh.org » 2009-06-26 8:08

真不好意思,这方面知识还真得恶补一下了,谢谢各位了。
头像
xiaocheng_zh
帖子: 46
注册时间: 2009-05-30 15:52
来自: DL LIAONING CHN

Re: c++ std::cout问题

#8

帖子 xiaocheng_zh » 2009-07-01 19:45

int* abc还没有房子,就想…… :em05 :em05 :em05
回复