推 zlw:array就是一塊連續的記憶體,需要取值時就用mov指令,指定記憶 07/14 15:21
→ zlw:體位址後放到暫存器。運作機制就是這樣。 07/14 15:22
→ zlw:這是指x86指令集,MIPS大概是用LW指令吧 07/14 15:23
推 rebellian:正確的說法(書本的寫法)是說array name不是variable 07/14 15:55
推 rebellian:主要的差別是pointer的值可以改變 但array name不行 07/14 16:00
推 zlw:如果 int n; 的 n 是變數,那 int arr[2]; 的 arr 就也是變數 07/14 16:06
→ zlw:只不過是資料型態不同的變數 07/14 16:07
→ softwind:sizeof 是編譯期關鍵字啦 run alloc的 看不出來 07/15 00:55
推 rebellian:說他不是變數的原因是因為你可以 n++ 但不能 arr++ 07/15 04:08
推 Ebergies:C/C++ array 不是變數, JAVA/C# 之類的才是 07/15 09:31
推 zlw:不算嗎...大概是我觀念有錯 07/15 09:40
推 UNARYvvv:那句話在 K&R II 裡面 5.3 Pointers and Arrays 07/15 20:20
→ UNARYvvv:".. an array name is not a variable .." 07/15 20:21
推 UNARYvvv:不過也可以看看 2.4 Declarations 07/15 20:34
→ UNARYvvv:"A declaration specifies a type, and contains a list 07/15 20:35
→ UNARYvvv:of one or more variables of that type, .." 之後舉的例 07/15 20:36
→ UNARYvvv:子是有 array 的 07/15 20:36
推 zlw:探求本義的話,如果 arr 代表的僅只是所在處記憶體位址的別名 07/15 20:48
→ zlw:那當然不是一個變數。而如果把 arr 跟 n 一樣視為某塊記憶體 07/15 20:49
→ zlw:可以存取而非唯讀的記憶體,那這時候就算變數了吧 07/15 20:50