标题:[求助][讨论]神秘的四个字节
只看楼主
wtyj112
Rank: 1
等 级:新手上路
帖 子:222
专家分:0
注 册:2007-5-9
结帖率:85.71%
 问题点数:0 回复次数:8 
[求助][讨论]神秘的四个字节
问题描述 一个程序目的是为了操作int数组 ,数组长度用const int max来申请空间保存,其中还申请其他一些变量,通过观察变量的地址发现在内存里总是这样排列的 先是其他变量->‘ ? ’-> 数组 -> const int max。
?这个地方神秘的总是少一个int量 就是4个字节,反复加入其他变量总是在按照上面的样式来的,总是神秘的少了4个字节 这4个字节是干嘛的??谁能帮我解惑!!
代码如下:
搜索更多相关主题的帖子: 字节 神秘 
2007-07-30 19:29
wtyj112
Rank: 1
等 级:新手上路
帖 子:222
专家分:0
注 册:2007-5-9
得分:0 

#include<iostream>
using namespace std;

int main()
{
//int b[3]={1,2,3};
// const int test = 99;
const int max=10;
// const int text1 = 11;

int a[max];
int *p=a;
int i,j,value1,value2;
int index1=0,index2;

int *p2=&i, *p3=&j, *p4=&value1, *p5=&value2, *p6=&index1, *p7=&index2;


cout<<"Enter the array number:";
for(i=0;i<max;i++)
{
cin>>*(p+i);
}
value1=*p;
value2=*p;
for(i=1;i<max;i++){
if(value1<*(p+i)){
value1=*(p+i);
index1=i;
}
}
for(j=1;j<max;j++){
if(value2>*(p+j)){
value2=*(p+j);
index2=j;
}
}
cout<<value1<<' '<<value2<<endl;
for(i=index1;i>0;i--){
*(p+i)=*(p+i-1);
*(p+i-1)=value1;
}
for(j=index2;j<max-1;j++){
*(p+j)=*(p+j+1);
*(p+j+1)=value2;
}

for(p=a;p<(a+max);p++)
cout<<*p<<' ';
cout<<endl;
cout <<&a<<' '/*<<&text1<<' '*/<<&max<</*' '<<&text<<' '<<&b<<*/' '<<p2<<' '<<p3<<' '<<p4<<' '<<p5<<' '<<p6<<' '<<p7;
cout<<endl;
cout <<*a<<' '/*<<text1<<' '*/<<max<</*' '<<text<<' '<<*b<<*/' '<<*p2<<' '<<*p3<<' '<<*p4<<' '<<*p5<<' '<<*p6<<' '<<*p7;
return 0;
}


计算机之路是痛苦并快乐着的!!
2007-07-30 19:30
wtyj112
Rank: 1
等 级:新手上路
帖 子:222
专家分:0
注 册:2007-5-9
得分:0 
晕 我粗心了!! 想了半天没注意那个指针,修改程序后重新运行 发现就是少算了那个指针!!
问题解决

计算机之路是痛苦并快乐着的!!
2007-07-30 19:48
wtyj112
Rank: 1
等 级:新手上路
帖 子:222
专家分:0
注 册:2007-5-9
得分:0 
少算了 int *p这个指针 呵呵

计算机之路是痛苦并快乐着的!!
2007-07-30 19:50
百年不亮
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:789
专家分:0
注 册:2006-4-14
得分:0 
运行下下面这个程序,你就知道为什么了:
#include <stdio.h>
#define INDEX 2
int main()
{
int i=0,array[2];
do
{
array[INDEX]=1;
printf("hello world");
}while(i);
}

在VC中定义INDEX为2,DEV-C++中定义为3

C/C++中的阴暗丑陋在你发现时会大吃一惊.编译器不得已而为之.
2007-07-30 19:52
百年不亮
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:789
专家分:0
注 册:2006-4-14
得分:0 
sigh! 我看错问题了,原来楼主说的不是这个问题.

在vc中没有神秘的四个字节,在以GCC为内核的编译器如DEV-C++就真的会跳出来吓唬你
2007-07-30 19:57
wtyj112
Rank: 1
等 级:新手上路
帖 子:222
专家分:0
注 册:2007-5-9
得分:0 
你能详细讲下吗?让我开开眼界,gcc从来没碰过!!能在windows下用吗?去那里下?能我发个吗?随便也要个说明 问档 最近想搞下linux 谢谢你 百年不亮

计算机之路是痛苦并快乐着的!!
2007-07-30 21:35
百年不亮
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:789
专家分:0
注 册:2006-4-14
得分:0 
DEV-C++是gcc移植到windows中的最好的几个IDE之一,重要的是这个是开源软件.

这里是它的官方主页,可以下载到最新的版本和扩展的函数库,比如做图形的allegro.最新的Dev-c++版本好象是5版Beta9.2:
http://bloodshed.net/


学linux下的c编程就要会makefile,下面是makefile教程:
http://bbs.bc-cn.net/viewthread.php?tid=136915&extra=&page=10#146263

如果你没有linux的环境又想在真实的linux中实践一下,可以来我们学校一个老师的网页上远程登陆到ubuntu linux中,不过只向教育网内用户开放:
http://202.200.121.18/FOSS/UbuntuTry.htm
2007-07-31 09:54
wtyj112
Rank: 1
等 级:新手上路
帖 子:222
专家分:0
注 册:2007-5-9
得分:0 
谢谢了兄弟 我刚在我电脑上装了 虚拟机装了个 redhat 9。0

计算机之路是痛苦并快乐着的!!
2007-07-31 10:29



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-159231-1-1.html




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

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