[問題] 陣列初值

看板C_and_CPP作者 (哲毛)時間8年前 (2015/10/27 22:09), 編輯推噓8(8020)
留言28則, 15人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) dev - c++ c語言 問題(Question): 請問各位如果陣列中所有元素的初始值都設為1,要怎麼寫? 是int array[i]={1}; 還是 int array[i](1); 還是都錯.. 請為新手我解惑感恩! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.217.175.230 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1445954948.A.31B.html

10/27 22:21, , 1F
array[這裡不能用變數], 舉例 int array[100]
10/27 22:21, 1F

10/27 22:26, , 2F
新版的可以用變數宣告陣列大小 會自動配置
10/27 22:26, 2F

10/27 22:26, , 3F
a大 但是我的元素數目是要輸入的欸那怎麼辦
10/27 22:26, 3F

10/27 22:26, , 4F
換個編譯器 舊版不支援
10/27 22:26, 4F

10/27 22:26, , 5F
兩個a大@@
10/27 22:26, 5F

10/27 22:27, , 6F
然後初始非0值可以用memset
10/27 22:27, 6F

10/27 22:33, , 7F
抱歉更正 自動配置大小要用C++才可以
10/27 22:33, 7F

10/27 22:55, , 8F
memset是以byte為單位 用在int會錯
10/27 22:55, 8F

10/27 22:56, , 9F
還有C++才是禁止VLA的
10/27 22:56, 9F

10/27 22:59, , 10F
C++是沒有VLA,但是gcc會把VLA功能打開
10/27 22:59, 10F

10/27 23:00, , 11F
因為我實際測試4.9版.c會禁 但是.cpp可以過
10/27 23:00, 11F

10/27 23:05, , 12F
所以其實C++不支援VLA 但是GCC有給用這樣?連C++11都能過
10/27 23:05, 12F

10/28 01:03, , 13F
gcc要加上-Wpedantic,它才會把非標準語法抓出來
10/28 01:03, 13F

10/28 01:04, , 14F
然後.c的話,你要用-std=c99才能用VLA,但這是標準
10/28 01:04, 14F

10/28 01:17, , 15F
這GCC還真詭異 加上-std=c99 VLA還是不過
10/28 01:17, 15F

10/28 01:20, , 16F
但是gcc的網站卻說ISO C99支援且有額外支援C90和C++
10/28 01:20, 16F

10/28 01:34, , 17F
第一種只有[0]是那個值,其他為未賦值狀態
10/28 01:34, 17F

10/28 01:34, , 18F
第二種syntax error
10/28 01:34, 18F

10/28 07:54, , 19F
就用迴圈吧
10/28 07:54, 19F

10/28 17:42, , 20F
用for迴圈
10/28 17:42, 20F

10/28 22:21, , 21F
我的話會用 vector<int> arr(i,1);
10/28 22:21, 21F

10/29 02:15, , 22F
VLA 不能給初始值吧
10/29 02:15, 22F

10/30 04:27, , 23F
如果堅持用陣列的話 請用std::fill (<algorithm>)
10/30 04:27, 23F

10/31 00:38, , 24F
人家就有寫 C 了為什麼好多人在那邊講 C++
10/31 00:38, 24F

10/31 02:44, , 25F
沒看到sorry ...
10/31 02:44, 25F

10/31 08:04, , 26F
memset(array,初值,sizeof(array))
10/31 08:04, 26F

10/31 08:48, , 27F
如果是 GCC 可考慮使用 Designated Initializers
10/31 08:48, 27F

10/31 08:49, , 28F
int array[64] = {[0 ... 63] = 1}; 寫起來大概是這樣
10/31 08:49, 28F
文章代碼(AID): #1MBuM4CR (C_and_CPP)