| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 679 人关注过本帖, 1 人收藏
标题:初次使用二维数组就错了,请指教
只看楼主 加入收藏
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
结帖率:99.76%
收藏(1)
已结贴  问题点数:30 回复次数:9 
初次使用二维数组就错了,请指教
#include<stdio.h>
#include<string.h>



int main()
{
    char s[]="abcdefg";
    int t[256][1];
    int i=0;
    printf("%c\n",s[1]);  //这里s[1]=b 是正确的
    for(i=0;i<256;i++)
    {
        t[i][0]=int('\0');
        t[i][1]=int('\0');
    }
    printf("%c\n",s[1]);  //这里s[1]=NULL 丢失了 WHY?
  
    return 0;
}
搜索更多相关主题的帖子: include abcdefg 
2012-11-11 17:05
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:8 
事实上,s[0-3]应该都是零了。老哥好像学过汇编吧?

重剑无锋,大巧不工
2012-11-11 17:30
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:8 
好像溢出了罢
2012-11-11 17:35
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
程序代码:
   0x004013b0 <+0>:    push   ebp
   0x004013b1 <+1>:    mov    ebp,esp
=> 0x004013b3 <+3>:    and    esp,0xfffffff0
   0x004013b6 <+6>:    sub    esp,0x420
   0x004013bc <+12>:    call   0x401a10 <__main>
   0x004013c1 <+17>:    mov    DWORD PTR [esp+0x414],0x64636261
   0x004013cc <+28>:    mov    DWORD PTR [esp+0x418],0x676665
   0x004013d7 <+39>:    mov    DWORD PTR [esp+0x41c],0x0
   0x004013e2 <+50>:    mov    al,BYTE PTR [esp+0x415]
   0x004013e9 <+57>:    movsx  eax,al
   0x004013ec <+60>:    mov    DWORD PTR [esp+0x4],eax
   0x004013f0 <+64>:    mov    DWORD PTR [esp],0x403064
   0x004013f7 <+71>:    call   0x401c80 <printf>
   0x004013fc <+76>:    mov    DWORD PTR [esp+0x41c],0x0
   0x00401407 <+87>:    jmp    0x40142f <main+127>
   0x00401409 <+89>:    mov    eax,DWORD PTR [esp+0x41c]
   0x00401410 <+96>:    mov    DWORD PTR [esp+eax*4+0x14],0x0
   0x00401418 <+104>:    mov    eax,DWORD PTR [esp+0x41c]
   0x0040141f <+111>:    inc    eax
   0x00401420 <+112>:    mov    DWORD PTR [esp+eax*4+0x14],0x0
   0x00401428 <+120>:    inc    DWORD PTR [esp+0x41c]
   0x0040142f <+127>:    cmp    DWORD PTR [esp+0x41c],0xff
   0x0040143a <+138>:    jle    0x401409 <main+89>
   0x0040143c <+140>:    mov    al,BYTE PTR [esp+0x415]
   0x00401443 <+147>:    movsx  eax,al
   0x00401446 <+150>:    mov    DWORD PTR [esp+0x4],eax
   0x0040144a <+154>:    mov    DWORD PTR [esp],0x403064
   0x00401451 <+161>:    call   0x401c80 <printf>
   0x00401456 <+166>:    mov    eax,0x0
   0x0040145b <+171>:    leave 
   0x0040145c <+172>:    ret   
   0x0040145d <+173>:    nop
   0x0040145e <+174>:    nop
   0x0040145f <+175>:    nop

2012-11-11 18:02
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
不知道咋回事.gdbinit竟然被覆盖了 谁覆盖的呢
2012-11-11 18:03
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
1 注意t各维的长度
2 看循环中楼主是怎么操作的
3 声明变量的入栈顺序是什么
4 栈空间的延伸方向是向哪一端的

重剑无锋,大巧不工
2012-11-11 18:11
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:8 
int t[256][1];

t[i][1]=int('\0');  //写多了,把char s[]="abcdefg";给覆盖了。看6楼版主说的。


总有那身价贱的人给作业贴回复完整的代码
2012-11-11 19:35
张朝成
Rank: 4
等 级:业余侠客
帖 子:149
专家分:265
注 册:2012-3-22
收藏
得分:8 
来学习的。
2012-11-11 20:23
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
马马虎虎知道怎么回事了

有待于进一步研究

DO IT YOURSELF !
2012-11-11 22:23
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用beyondyf在2012-11-11 17:30:13的发言:

事实上,s[0-3]应该都是零了。老哥好像学过汇编吧?
知道一点  大段的汇编代码还是弄不懂的

DO IT YOURSELF !
2012-11-11 22:24
快速回复:初次使用二维数组就错了,请指教
数据加载中...
 
   



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

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