memory数组初始化过程

来源:互联网 发布:少儿编程书籍 编辑:程序博客网 时间:2024/05/24 01:49

我们常用memset对int数组进行初始化,替换数字可以是0或-1,但若为其他数字呢?


测试代码如下:

    #include<cstdio>      #include<cstring>      using namespace std;            int a[20];            int main()      {          for (int i = -4; i < 260; i++)          {              memset(a, i, sizeof(a));              printf("%d : %d\n", i, a[13]);          }          return 0;      }  


测试结果:(对数组a中的其他数也一样)

-4 : -50529028

-3 : -33686019

-2 : -16843010

-1 : -1

0 : 0

1 : 16843009  ///已经比较大了(10^7)

2 : 33686018

3 : 50529027

4 : 67372036

5 : 84215045

6 : 101058054

7 : 117901063

8 : 134744072

9 : 151587081

10 : 168430090

11 : 185273099

12 : 202116108

13 : 218959117

14 : 235802126

15 : 252645135

16 : 269488144

17 : 286331153

18 : 303174162

19 : 320017171

20 : 336860180

21 : 353703189

22 : 370546198

23 : 387389207

24 : 404232216

25 : 421075225

26 : 437918234

27 : 454761243

28 : 471604252

29 : 488447261

30 : 505290270

31 : 522133279

32 : 538976288

33 : 555819297

34 : 572662306

35 : 589505315

36 : 606348324

37 : 623191333

38 : 640034342

39 : 656877351

40 : 673720360

41 : 690563369

42 : 707406378

43 : 724249387

44 : 741092396

45 : 757935405

46 : 774778414

47 : 791621423

48 : 808464432

49 : 825307441

50 : 842150450

51 : 858993459

52 : 875836468

53 : 892679477

54 : 909522486

55 : 926365495

56 : 943208504

57 : 960051513

58 : 976894522

59 : 993737531

60 : 1010580540

61 : 1027423549

62 : 1044266558

63 : 1061109567  ///编程中常用:memset(a,0x3f,sizeof(a));   (0x3f3f3f3f的十进制是1061109567)

///请参考这篇文章

64 : 1077952576

65 : 1094795585

66 : 1111638594

67 : 1128481603

68 : 1145324612

69 : 1162167621

70 : 1179010630

71 : 1195853639

72 : 1212696648

73 : 1229539657

74 : 1246382666

75 : 1263225675

76 : 1280068684

77 : 1296911693

78 : 1313754702

79 : 1330597711

80 : 1347440720

81 : 1364283729

82 : 1381126738

83 : 1397969747

84 : 1414812756

85 : 1431655765

86 : 1448498774

87 : 1465341783

88 : 1482184792

89 : 1499027801

90 : 1515870810

91 : 1532713819

92 : 1549556828

93 : 1566399837

94 : 1583242846

95 : 1600085855

96 : 1616928864

97 : 1633771873

98 : 1650614882

99 : 1667457891

100 : 1684300900

101 : 1701143909

102 : 1717986918

103 : 1734829927

104 : 1751672936

105 : 1768515945

106 : 1785358954

107 : 1802201963

108 : 1819044972

109 : 1835887981

110 : 1852730990

111 : 1869573999

112 : 1886417008

113 : 1903260017

114 : 1920103026

115 : 1936946035

116 : 1953789044

117 : 1970632053

118 : 1987475062

119 : 2004318071

120 : 2021161080

121 : 2038004089

122 : 2054847098

123 : 2071690107

124 : 2088533116

125 : 2105376125

126 : 2122219134

127 : 2139062143   ///最大,与2^31相差约0.4%

128 : -2139062144   ///最小

129 : -2122219135

130 : -2105376126

131 : -2088533117

132 : -2071690108

133 : -2054847099

134 : -2038004090

135 : -2021161081

136 : -2004318072

137 : -1987475063

138 : -1970632054

139 : -1953789045

140 : -1936946036

141 : -1920103027

142 : -1903260018

143 : -1886417009

144 : -1869574000

145 : -1852730991

146 : -1835887982

147 : -1819044973

148 : -1802201964

149 : -1785358955

150 : -1768515946

151 : -1751672937

152 : -1734829928

153 : -1717986919

154 : -1701143910

155 : -1684300901

156 : -1667457892

157 : -1650614883

158 : -1633771874

159 : -1616928865

160 : -1600085856

161 : -1583242847

162 : -1566399838

163 : -1549556829

164 : -1532713820

165 : -1515870811

166 : -1499027802

167 : -1482184793

168 : -1465341784

169 : -1448498775

170 : -1431655766

171 : -1414812757

172 : -1397969748

173 : -1381126739

174 : -1364283730

175 : -1347440721

176 : -1330597712

177 : -1313754703

178 : -1296911694

179 : -1280068685

180 : -1263225676

181 : -1246382667

182 : -1229539658

183 : -1212696649

184 : -1195853640

185 : -1179010631

186 : -1162167622

187 : -1145324613

188 : -1128481604

189 : -1111638595

190 : -1094795586

191 : -1077952577

192 : -1061109568

193 : -1044266559

194 : -1027423550

195 : -1010580541

196 : -993737532

197 : -976894523

198 : -960051514

199 : -943208505

200 : -926365496

201 : -909522487

202 : -892679478

203 : -875836469

204 : -858993460

205 : -842150451

206 : -825307442

207 : -808464433

208 : -791621424

209 : -774778415

210 : -757935406

211 : -741092397

212 : -724249388

213 : -707406379

214 : -690563370

215 : -673720361

216 : -656877352

217 : -640034343

218 : -623191334

219 : -606348325

220 : -589505316

221 : -572662307

222 : -555819298

223 : -538976289

224 : -522133280

225 : -505290271

226 : -488447262

227 : -471604253

228 : -454761244

229 : -437918235

230 : -421075226

231 : -404232217

232 : -387389208

233 : -370546199

234 : -353703190

235 : -336860181

236 : -320017172

237 : -303174163

238 : -286331154

239 : -269488145

240 : -252645136

241 : -235802127

242 : -218959118

243 : -202116109

244 : -185273100

245 : -168430091

246 : -151587082

247 : -134744073

248 : -117901064

249 : -101058055

250 : -84215046

251 : -67372037

252 : -50529028

253 : -33686019

254 : -16843010

255 : -1   ///回来了

256 : 0

257 : 16843009

258 : 33686018

259 : 50529027


对于“1=16843009”的说明:

memset是以字节为单位进行赋值,每个都用 ASCII为1的字符去填充,转为二进制后,1就是00000001,占一个字节。而一个int类型是4字节,合一起就是 00000001000000010000000100000001,相当于(1<<24)+(1<<16)+(1<<8)+1 = 16843009。

0 0
原创粉丝点击