当前位置: 代码迷 >> C语言 >> [求助][讨论]神秘的四个字节
  详细解决方案

[求助][讨论]神秘的四个字节

热度:196   发布时间:2007-07-30 19:29:34.0
[求助][讨论]神秘的四个字节
问题描述 一个程序目的是为了操作int数组 ,数组长度用const int max来申请空间保存,其中还申请其他一些变量,通过观察变量的地址发现在内存里总是这样排列的 先是其他变量->‘ ? ’-> 数组 -> const int max。
?这个地方神秘的总是少一个int量 就是4个字节,反复加入其他变量总是在按照上面的样式来的,总是神秘的少了4个字节 这4个字节是干嘛的??谁能帮我解惑!!
代码如下:
搜索更多相关的解决方案: 字节  神秘  

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

#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;
}


----------------解决方案--------------------------------------------------------
晕 我粗心了!! 想了半天没注意那个指针,修改程序后重新运行 发现就是少算了那个指针!!
问题解决

----------------解决方案--------------------------------------------------------
少算了 int *p这个指针 呵呵
----------------解决方案--------------------------------------------------------
运行下下面这个程序,你就知道为什么了:
#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++中的阴暗丑陋在你发现时会大吃一惊.编译器不得已而为之.
----------------解决方案--------------------------------------------------------
sigh! 我看错问题了,原来楼主说的不是这个问题.

在vc中没有神秘的四个字节,在以GCC为内核的编译器如DEV-C++就真的会跳出来吓唬你

----------------解决方案--------------------------------------------------------
你能详细讲下吗?让我开开眼界,gcc从来没碰过!!能在windows下用吗?去那里下?能我发个吗?随便也要个说明 问档 最近想搞下linux 谢谢你 百年不亮
----------------解决方案--------------------------------------------------------
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
----------------解决方案--------------------------------------------------------
谢谢了兄弟 我刚在我电脑上装了 虚拟机装了个 redhat 9。0
----------------解决方案--------------------------------------------------------
  相关解决方案