[問題] 陣列初始化

看板C_and_CPP作者 (corn)時間15年前 (2009/05/21 20:50), 編輯推噓12(12015)
留言27則, 14人參與, 最新討論串1/1
int box[25]={0}; 印出來後看0沒問題 int box[25]={1}; 只有第一個是 1 ??? 除了用迴圈跑以外,要怎麼將int陣列初始化為1 ?? memset,只能一次一個byte填,也沒辦法做到 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.94.82

05/21 20:51, , 1F
請這樣寫 比較不會混淆 int box[25]={};
05/21 20:51, 1F

05/21 20:57, , 2F
樓上的意思,我不太懂XD
05/21 20:57, 2F

05/21 21:04, , 3F
不寫初值是0?所以你用int box[25]={};就可以
05/21 21:04, 3F

05/21 21:12, , 4F
我是要將所有元素初始為1
05/21 21:12, 4F

05/21 21:16, , 5F
fill(box, box+25, 1)
05/21 21:16, 5F

05/21 21:20, , 6F
ANSI C有這個函數嗎?
05/21 21:20, 6F

05/21 21:21, , 7F
#include <algorithm>
05/21 21:21, 7F

05/21 21:24, , 8F
C++限定
05/21 21:24, 8F

05/21 21:26, , 9F
那有c的方法嗎?
05/21 21:26, 9F

05/21 21:27, , 10F
這是要搞短碼達人嗎,用迴圈沒差吧
05/21 21:27, 10F

05/21 22:00, , 11F
int box[25]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
05/21 22:00, 11F

05/21 22:00, , 12F
,1,1,1,1,1};
05/21 22:00, 12F

05/21 22:03, , 13F
memset();
05/21 22:03, 13F

05/21 22:10, , 14F
memset辦不到吧 難道要用for 一直memset 4byte為1嗎?
05/21 22:10, 14F

05/21 22:15, , 15F
memset 1 只會變成 0xffffffff
05/21 22:15, 15F

05/21 22:31, , 16F
一個迴圈會有差嗎 = =
05/21 22:31, 16F

05/21 22:32, , 17F
樓上, 應該是 0x01010101? 每 byte 填 1
05/21 22:32, 17F

05/21 22:33, , 18F
被插一行, 是樓樓上@@"
05/21 22:33, 18F

05/21 22:35, , 19F
其實我是要用在好幾維陣列,如果char,用memset
05/21 22:35, 19F

05/21 22:35, , 20F
只要一行就搞定了
05/21 22:35, 20F

05/21 23:12, , 21F
你可以自己寫一個 int 用的 memset 呀
05/21 23:12, 21F

05/21 23:19, , 22F
for(i = 0; i < 25; box[i] = 1, ++i); 不也一行?
05/21 23:19, 22F

05/22 16:28, , 23F
C90 還要多一行 int i 的宣告
05/22 16:28, 23F

05/22 16:28, , 24F
C99 可以寫 for(int i = 0; i < 25; box[i++] = 1);
05/22 16:28, 24F

05/22 22:19, , 25F
int i; for(i = 0; i < 25; box[i] = 1, ++i);
05/22 22:19, 25F

05/22 22:20, , 26F
上面這樣也是一行啊....(無誤XD)
05/22 22:20, 26F

05/26 20:29, , 27F
推樓上XD
05/26 20:29, 27F
文章代碼(AID): #1A5Ku0A7 (C_and_CPP)