[爆卦]Memset是什麼?優點缺點精華區懶人包

為什麼這篇Memset鄉民發文收入到精華區:因為在Memset這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者sa901119 (ads901119)看板C_and_CPP標題[問題] memset有辦法初...



在C++ reference的網站中提到:

void * memset ( void * ptr, int value, size_t num );

Fill block of memory

Sets the first num bytes of the block of memory pointed by ptr to the
^^^^^^
specified value (interpreted as an unsigned char).

因此如果我寫:

int a[5][5];

memset(a, 1, sizeof(a));

成是應該會把a[][]設成一個5*5,

每個都是 00000001 00000001 00000001 00000001 (2進位)的array

也就是16843009, 而非我要的1

因此我在找有沒有辦法快速initialize一個二維陣列的方法 (用2層for感覺很慢)

謝謝

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.252.248
alongalone:那你為啥不先清為0在assign 1到你要的位置..@@ 01/24 09:17
sa901119:因為我要全部都1啊.... 01/24 09:34
Bencrie:for迴圈還好吧 .. 又不是浮點計算 01/24 09:43
MOONRAKER:別再感覺了。 01/24 09:58
sa901119:好那我修改措詞 有沒有一個指令就能全部初始為非零任意值 01/24 10:27
yoco315:這老問題嚕,沒有,乖乖兩層迴圈 01/24 10:37
VictorTom:連續記憶體空間的話, 把MMX一類的指令集拿出來不知道有 01/24 11:12
VictorTom:沒有辦法XD 01/24 11:13
AstralBrain:fill(&a[0][0], &a[5][0], 1) 01/24 11:52
loveme00835:一層就好了吧 01/24 13:26
loveme00835:科科, 忘記是每個byte一個值... 01/24 13:36
johnhmj:你 sizeof 給錯了~ =_=! 01/24 17:41
johnhmj:它那個API只是給你方便而已,執行時不見得會比較快。 01/24 17:50
johnhmj:縮短C/C++程式碼不會令電腦加快執行程式。 01/24 17:52
johnhmj:XD 可以叫霹靂車幫你優化執行檔~ 01/24 17:56
sunneo:一個指令不見得會比多個指令快 要考慮指令週期 01/24 18:55
taiwan2000:請問用for會慢到哪去? 01/25 01:54
cplusplus:某階段是很容易想要鑽這些小事情的... 01/25 02:40
CrBoy:要是陣列真的很大 那就用memcpy 1->2->4->8->16->... 01/25 11:41
CrBoy:但是 這也不見得比較快阿XDDD 01/25 11:42

你可能也想看看

搜尋相關網站