帮我分析分析程序

gp600690 2004-10-14 02:15:56
我目前在看c++,以下是有关强制类型转换的问题,请您帮俺分析分析,告诉俺运行结果。我主要想看看程序实在代码的什么地方崩溃。

代码如下:

#include <iostream.h>
struct Account{
long num;
double bal;};

void copyAccounts(Account dest[],const Account src[],int size)
{
int data1length= sizeof(*dest)*size;
int data2length= sizeof(*src)*size;
cout<<"data1length: "<<data1length<<endl;
cout<<"data2length: "<<data2length<<endl;
char ch;
cin>>ch;
return;
}
int main()
{
int data1[20],data2[20];
copyAccounts((Account*)data1,(Account*)data2,20);
return 0;
}
...全文
101 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
gp600690 2004-10-14
  • 打赏
  • 举报
回复
谢谢 gradeyong(草籽)
gp600690 2004-10-14
  • 打赏
  • 举报
回复
代码写错了,应该是:
#include <iostream.h>

struct Account{
long num;
double bal;};

void copyAccounts(Account dest[],const Account src[],int size)
{
int data1length= sizeof(*dest)*size;
int data2length= sizeof(*src)*size;
cout<<"data1length: "<<data1length<<endl;
cout<<"data2length: "<<data2length<<endl;
char ch;
cin>>ch;
for(int i=0;i<size;i++)
{
dest[i]=src[i];
}
}
int main()
{
int data1[20],data2[20];
copyAccounts((Account*)data1,(Account*)data2,20);

return 0;
}
gradeyong 2004-10-14
  • 打赏
  • 举报
回复
抱歉,误人子弟了

应该是

long长度为4
double长度为8
但同为一个结构的成员,都按最大的分配内存,即内存对齐就是一个account是8+8=16

非常抱歉
gradeyong 2004-10-14
  • 打赏
  • 举报
回复
long长度为8
double长度为16
但同为一个结构的成员,都按最大的分配内存,就是一个account是16+16=32
gradeyong 2004-10-14
  • 打赏
  • 举报
回复
有强制类型转换的内容吗? 是内存对齐吧?
zxl_llx 2004-10-14
  • 打赏
  • 举报
回复
我用VC++6.0编译了,结果都是320
gradeyong 2004-10-14
  • 打赏
  • 举报
回复
结果是:

data1length: 320
data2length: 320
gradeyong 2004-10-14
  • 打赏
  • 举报
回复
你的程序可以编译并运行,没崩溃.

你在网吧吗? 有闪盘吗? 下载个Dev C++吧, 十几M的编译器,可以随身携带,很好用,全免费.以下是网址:

http://www.bloodshed.net/

下一个吧
nicewinds 2004-10-14
  • 打赏
  • 举报
回复
data1,data2从int指针转换成Account指针,sizeof(*data1)和sizeof(*data2)这时都是12字节,结果为
data1length:240data2length:240

我觉得你的结构定义的有问题。
gp600690 2004-10-14
  • 打赏
  • 举报
回复
俺没有电脑,一边看书一边想,想不通就问搭伙。

64,642

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧