标题:数据内存存放问题
只看楼主
eww
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2006-11-29
 问题点数:0 回复次数:4 
数据内存存放问题

数据内存存放问题
#include<stdio.h>
void main()
{
char a[]="123456789"; //断点处
char b[]="abcdefg";
}

机器是先确定指定a的值呢还是先确定指针b的值呢?
我设断点看过,跳到指定断点处时,a的值和b的值都有了,并且a的地址值大于b的地址值,这是为什么呢?
请大家指点一下,谢谢

搜索更多相关主题的帖子: 内存 数据 断点 机器 void 
2007-01-18 15:49
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
得分:0 
当然是先A后B
栈的空间是向上生长的
也就是说地址会逐渐减少

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2007-01-18 17:23
eww
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2006-11-29
得分:0 

因为另一个版块老久没人答所以我才又在这发了,SORRY

可能我没问清楚
没错,a、b的内容是地址,放在栈里的话应该是a放在下面,b放在上面,a的地址应该大于b的地址(地址的地址/栈内的地址),但是为什么a的内容(也是地址/a所指向的字符串首地址)大于b的内容呢? 这两个字符串可不是放在栈里面的哦

2007-01-19 14:29
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
得分:0 

应该不能
你把数据发上来


嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2007-01-19 17:58
eww
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2006-11-29
得分:0 
程序就是:
#include<stdio.h>
void main()
{
char a[]="123456789"; //断点处
char b[]="abcdefg";
}
我的机器是WINDOWSXP SP2,VC6.0。运行到断点处是
a 0x0012ff74
b 0x0012ff6c
&a 0x0012ff74
&b 0x0012ff6c
2007-01-19 18:29



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




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

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