Re: [問題] 關於指標與命令列參數的問題
看板C_and_CPP (C/C++)作者meconin (miss you ~)時間14年前 (2012/02/05 00:18)推噓2(2推 0噓 6→)留言8則, 6人參與討論串2/2 (看更多)
: #include <stdio.h>
:
: void main(int argc,char *argv[])
: {
: char *x[3];
: char (*a)[3];
:
: printf ("sizeof(x):%d\n", sizeof(x));
: printf ("sizeof(a):%d\n", sizeof(a));
: printf ("sizeof(argv):%d\n", sizeof(argv);
: }
:
:
:
: → ForOthers:不太懂樓上兩位的意思..可以講詳細點嗎??:) 02/04 18:12
我其實不是很肯定一些名詞確切的定義,sizeof 應該是函數、運算子還是巨集?
誠如推文,sizeof 應被定義為 operator
不過事實是這樣的, compiler 幫你把 C語言 變成 組合語言
一般他看到變數就會放到 stack 裡面
int a;
int b
char *c[3];
O O O O O O O O O O O O O O O O O O O O O O O O
======= ------- ^ rsp
b a
類似這樣,但當他看到
a = sizeof(c);
他實際上是寫
push rbp
mov rbp, rsp assign rsp 的值給 rbp
mov DWORD PTR [rbp-4], 24
就是直接知道 c 的大小是 24 的意思
而他看到 b = sizeof(argv);
mov DWORD PTR [rbp-8], 8
其實也是直接就知道 argv 的大小是 8
btw, 這是 64-bit 作業系統 XD
我是直接用 gcc -S -masm=intel
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.30.46
→
02/05 00:19, , 1F
02/05 00:19, 1F
→
02/05 01:07, , 2F
02/05 01:07, 2F
→
02/05 01:22, , 3F
02/05 01:22, 3F
→
02/05 16:25, , 4F
02/05 16:25, 4F
※ 編輯: meconin 來自: 140.112.30.46 (02/05 18:11)
→
02/05 18:13, , 5F
02/05 18:13, 5F
推
02/06 11:25, , 6F
02/06 11:25, 6F
推
02/06 14:24, , 7F
02/06 14:24, 7F
→
02/07 16:28, , 8F
02/07 16:28, 8F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章