亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
123下一頁
最近訪問板塊 發(fā)新帖
查看: 6663 | 回復(fù): 26
打印 上一主題 下一主題

關(guān)于局部變量 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2010-10-09 22:10 |只看該作者 |倒序瀏覽
  1. #include <unistd.h>

  2. struct mystruct {
  3.         int i;
  4. };

  5. int main()
  6. {
  7.         int i;
  8.        
  9.         for (i = 0; i < 10; i++) {
  10.                 struct mystruct s;
  11.                
  12.                 s.i = i;
  13.                 printf("%d\n", &s);
  14.         }
  15.        
  16.         return 0;
  17. }
復(fù)制代碼
編譯成功,不過運行后s的地址不變,難道s不屬于塊里面的嗎?

論壇徽章:
2
2015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11
2 [報告]
發(fā)表于 2010-10-09 22:12 |只看該作者
程序塊中的數(shù)據(jù)定義(框架)只執(zhí)行一次.

論壇徽章:
0
3 [報告]
發(fā)表于 2010-10-09 22:23 |只看該作者
哦!原來是這樣!

論壇徽章:
0
4 [報告]
發(fā)表于 2010-10-09 23:15 |只看該作者
回復(fù) 2# cobras


    什么意思?不會每次為s分配空間,然后在銷毀,再分配,在銷毀嗎?

論壇徽章:
2
程序設(shè)計版塊每日發(fā)帖之星
日期:2015-06-17 22:20:00每日論壇發(fā)貼之星
日期:2015-06-17 22:20:00
5 [報告]
發(fā)表于 2010-10-09 23:20 |只看該作者
提示: 作者被禁止或刪除 內(nèi)容自動屏蔽

論壇徽章:
0
6 [報告]
發(fā)表于 2010-10-09 23:24 |只看該作者
應(yīng)該只會分配一次吧!

論壇徽章:
0
7 [報告]
發(fā)表于 2010-10-09 23:29 |只看該作者
應(yīng)該是分配到棧里面的吧

論壇徽章:
0
8 [報告]
發(fā)表于 2010-10-09 23:32 |只看該作者
應(yīng)該是分配到棧里面的吧

論壇徽章:
0
9 [報告]
發(fā)表于 2010-10-10 02:15 |只看該作者
本帖最后由 krein8964 于 2010-10-10 03:10 編輯

反匯編看一下才發(fā)現(xiàn)以前理解錯了。

if、while、for等內(nèi)部定義的變量也是在函數(shù)開始的時候壓棧,花括號僅僅是限定內(nèi)部定義的變量外部不可見,外部試圖訪問時編譯器會報錯。

反匯編后的代碼
  1. 00000000004004e4 <main>:
  2.   4004e4:       55                      push   %rbp
  3.   4004e5:       48 89 e5                mov    %rsp,%rbp
  4.   4004e8:       48 83 ec 10             sub    $0x10,%rsp
  5.   4004ec:       c7 45 fc 00 00 00 00    movl   $0x0,-0x4(%rbp)
  6.   4004f3:       eb 23                   jmp    400518 <main+0x34>
  7.   4004f5:       8b 45 fc                mov    -0x4(%rbp),%eax
  8.   4004f8:       89 45 f0                mov    %eax,-0x10(%rbp)
  9.   4004fb:       b8 1c 06 40 00          mov    $0x40061c,%eax
  10.   400500:       48 8d 55 f0             lea    -0x10(%rbp),%rdx
  11.   400504:       48 89 d6                mov    %rdx,%rsi
  12.   400507:       48 89 c7                mov    %rax,%rdi
  13.   40050a:       b8 00 00 00 00          mov    $0x0,%eax
  14.   40050f:       e8 cc fe ff ff          callq  4003e0 <printf@plt>
  15.   400514:       83 45 fc 01             addl   $0x1,-0x4(%rbp)
  16.   400518:       83 7d fc 09             cmpl   $0x9,-0x4(%rbp)
  17.   40051c:       7e d7                   jle    4004f5 <main+0x11>
  18.   40051e:       b8 00 00 00 00          mov    $0x0,%eax
  19.   400523:       c9                      leaveq
  20.   400524:       c3                      retq
復(fù)制代碼

論壇徽章:
0
10 [報告]
發(fā)表于 2010-10-10 09:43 |只看該作者
回復(fù) 9# krein8964


    你這個反匯編是這么弄出來的?
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP