討論區快速選單
知識庫快速選單
軟體開發過程中有哪些資安漏洞? 網路投保旅行平安險 網路投保旅行平安險
[ 回上頁 ] [ 討論區發言規則 ]
為甚麼這樣的陣列初值設定法過不了編譯呢?
更改我的閱讀文章字型大小
作者 : kotty123(存在)
[ 貼文 56 | 人氣 0 | 評價 10 | 評價/貼文 0.18 | 送出評價 12 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2015/8/2 下午 06:28:18
int a[10];
a[10]={1,2,3,4,5,6,7,8,9,10};
  

各位可以說明一下嗎?
我摸不著頭緒

作者 : sflam(Raymond)討論區板主 Visual C++ .NET卓越專家VC++一代宗師新手入門優秀好手資訊類作業求救頂尖高手C++一代宗師貼文超過4000則
[ 貼文 4945 | 人氣 9172 | 評價 32290 | 評價/貼文 6.53 | 送出評價 142 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2015/8/2 下午 08:13:55
>int a[10];
>a[10]={1,2,3,4,5,6,7,8,9,10};

這不叫「初始值設定」. 「初始值設定」是在定義時同時賦值:
  int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

你第二行的 a[10] 的意思是陣列 a 的第 11 個元素 (第一個元素的引數是 0), 首先這已超出陣列的範圍. 其次 '=' 右邊的 {...} 在這個不是「初始值設定」的句子裡是沒有意義的 - 這才是編譯錯誤的原因.

作者 : kotty123(存在)
[ 貼文 56 | 人氣 0 | 評價 10 | 評價/貼文 0.18 | 送出評價 12 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2015/8/2 下午 08:53:29
原來系統把它當作第11個元素....


int a[10];
a={1,2,3,4,5,6,7,8,9,10};

又是錯在哪裡呢?
作者 : sflam(Raymond)討論區板主 Visual C++ .NET卓越專家VC++一代宗師新手入門優秀好手資訊類作業求救頂尖高手C++一代宗師貼文超過4000則
[ 貼文 4945 | 人氣 9172 | 評價 32290 | 評價/貼文 6.53 | 送出評價 142 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人kotty123註記此篇回應為最佳解答 2015/8/2 下午 10:06:59
>原來系統把它當作第11個元素....

那是語法, 是程式語言的定義. 跟系統沒有關係.

>
>那
>int a[10];
>a={1,2,3,4,5,6,7,8,9,10};
>
>又是錯在哪裡呢?

式子
  a={1,2,3,4,5,6,7,8,9,10};
有兩個問題, 其中一個問題上面已略有提過了. {1,2,3,4,5,6,7,8,9,10} 這個語法是在做初始化, 而初始化只能在定義時發生. 上面兩行只有第一行是定義, 只有在那堣~能初始化. 第二行不是定義, 不能用 {1,2,3,4,5,6,7,8,9,10} 這個式子.

第二個問題是: 陣列名字在絕大多數む註め的式子裡會退格成指標, 指向陣列第一個元素 (也可以看成是陣列第一個元素的位址), 也就是說: a 等於 &a[0]. 實際上, 編譯器會把所有的 a 轉換成 &a[0].

む註め這裡說絕大多數, 因為有例外, 例外就是 sizeof 運算子. sizeof(a) 會算出陣列 a 佔多少個 byte, 而不是指標的大小.
 板主 : simula
 > C++ - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - C++ - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
C++
1 Raymond 13050 
2 青衫 4760 
3 simula 4690 
4 coco 4030 
5 白老鼠(Gary) 3670 
6 ozzy 2540 
7 Ben 2250 
8 Anderson 1960 
9 windblown 1650 
10 Kenny 1560 
C++
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2019 程式設計俱樂部 http://www.programmer-club.com.tw/
0.15625