看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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
alvine: array[這裡不能用變數], 舉例 int array[100] 10/27 22:21
AIGecko: 新版的可以用變數宣告陣列大小 會自動配置 10/27 22:26
mtbehisseste: a大 但是我的元素數目是要輸入的欸那怎麼辦 10/27 22:26
AIGecko: 換個編譯器 舊版不支援 10/27 22:26
mtbehisseste: 兩個a大@@ 10/27 22:26
AIGecko: 然後初始非0值可以用memset 10/27 22:27
AIGecko: 抱歉更正 自動配置大小要用C++才可以 10/27 22:33
CaptainH: memset是以byte為單位 用在int會錯 10/27 22:55
CaptainH: 還有C++才是禁止VLA的 10/27 22:56
tjjh89017: C++是沒有VLA,但是gcc會把VLA功能打開 10/27 22:59
AIGecko: 因為我實際測試4.9版.c會禁 但是.cpp可以過 10/27 23:00
AIGecko: 所以其實C++不支援VLA 但是GCC有給用這樣?連C++11都能過 10/27 23:05
littleshan: gcc要加上-Wpedantic,它才會把非標準語法抓出來 10/28 01:03
littleshan: 然後.c的話,你要用-std=c99才能用VLA,但這是標準 10/28 01:04
AIGecko: 這GCC還真詭異 加上-std=c99 VLA還是不過 10/28 01:17
AIGecko: 但是gcc的網站卻說ISO C99支援且有額外支援C90和C++ 10/28 01:20
fatrabitree: 第一種只有[0]是那個值,其他為未賦值狀態 10/28 01:34
fatrabitree: 第二種syntax error 10/28 01:34
IcecreamHsu: 就用迴圈吧 10/28 07:54
hotrain13: 用for迴圈 10/28 17:42
johnjohnlin: 我的話會用 vector<int> arr(i,1); 10/28 22:21
lantw44: VLA 不能給初始值吧 10/29 02:15
lNishan: 如果堅持用陣列的話 請用std::fill (<algorithm>) 10/30 04:27
uranusjr: 人家就有寫 C 了為什麼好多人在那邊講 C++ 10/31 00:38
lNishan: 沒看到sorry ... 10/31 02:44
zxc159623487: memset(array,初值,sizeof(array)) 10/31 08:04
LiloHuang: 如果是 GCC 可考慮使用 Designated Initializers 10/31 08:48
LiloHuang: int array[64] = {[0 ... 63] = 1}; 寫起來大概是這樣 10/31 08:49