热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

golang变量bool,slice,string,rune,数组

boolbool占1位,但是按照8位对齐字符串,数组,slice字符串结构runtimestring.gotypestringStructstruct{strunsafe.Poin


bool


bool占1位,但是按照8位对齐


字符串, 数组,slice


字符串结构


runtime/string .go
type stringStruct struct {
str unsafe.Pointer
len int
}
type slice struct {
array unsafe.Pointer
len int
cap int
}

基于字符串创建的切片和原字符串指向相同的底层字符数组, 字符串的切片操作返回的子串仍然是string,而非slice。


切片数组返回的是,slice,但是底层指向 数组


字符串转切片和转[]byte []rune, []byte转字符串


code


func testSlice() {
acb := &[...]byte{1, 2, 3, 4, 5, 11}
acb1 := acb[2:4]
acd := [...]byte{1, 2, 3, 4, 5, 11}
acd1 := acd[2:4]
acd1[0] = 222
abb := &[...]bool{true, true}
as := "sasasa"
as1 := as[1:2]
ab := []byte(as)
ar := []rune(as)
as2 := string(ar)
var cc []int
cc2 := make([]int, 0, 0)
cc3 := []int{}
cc4 := []int{1, 2, 3}
_ = ab
_ = ar
_ = as
_ = as1
_ = as2
_ = acb
_ = acb1
_ = acd1
_ = abb
_ = cc
_ = cc2
_ = cc3
_ = cc4
}

go tool compile -N -l -S function.go > function.s


编译结果, 删除了部分垃圾回收代码


"".testSlice STEXT size=817 args=0x0 locals=0x240
0x0000 00000 (function.go:7) TEXT "".testSlice(SB), ABIInternal, $576-0
0x0000 00000 (function.go:7) MOVQ (TLS), CX
0x0009 00009 (function.go:7) LEAQ -448(SP), AX
0x0011 00017 (function.go:7) CMPQ AX, 16(CX)
0x0015 00021 (function.go:7) JLS 807
0x001b 00027 (function.go:7) SUBQ $576, SP
0x0022 00034 (function.go:7) MOVQ BP, 568(SP)
0x002a 00042 (function.go:7) LEAQ 568(SP), BP
0x0032 00050 (function.go:7) FUNCDATA $0, gclocals·3e27b3aa6b89137cce48b3379a2a6610(SB)
0x0032 00050 (function.go:7) FUNCDATA $1, gclocals·ab5a91be773f238237f644bc41206a37(SB)
0x0032 00050 (function.go:7) FUNCDATA $3, gclocals·0b9f61cbb8d6dc1576beaf315bac6a63(SB)
# autotmp_15+58(SP)变量acb的指向数组
0x0032 00050 (function.go:9) MOVL $0, ""..autotmp_15+58(SP)
0x003a 00058 (function.go:9) MOVW $0, ""..autotmp_15+62(SP)
0x0041 00065 (function.go:9) LEAQ ""..autotmp_15+58(SP), AX
# autotmp_14+320(SP)是autotmp_15+58(SP)的地址,最终会赋给acb, 初始化autotmp_15+58(SP)变量
0x0046 00070 (function.go:9) MOVQ AX, ""..autotmp_14+320(SP)
0x0050 00080 (function.go:9) MOVB $1, ""..autotmp_15+58(SP)
0x0055 00085 (function.go:9) MOVQ ""..autotmp_14+320(SP), AX
0x005f 00095 (function.go:9) MOVB $2, 1(AX)
0x0063 00099 (function.go:9) MOVQ ""..autotmp_14+320(SP), AX
0x006d 00109 (function.go:9) MOVB $3, 2(AX)
0x0071 00113 (function.go:9) MOVQ ""..autotmp_14+320(SP), AX
0x007b 00123 (function.go:9) MOVB $4, 3(AX)
0x007f 00127 (function.go:9) MOVQ ""..autotmp_14+320(SP), AX
0x0089 00137 (function.go:9) MOVB $5, 4(AX)
0x008d 00141 (function.go:9) MOVQ ""..autotmp_14+320(SP), AX
0x0097 00151 (function.go:9) MOVB $11, 5(AX)
0x009b 00155 (function.go:9) MOVQ ""..autotmp_14+320(SP), AX
0x00a3 00163 (function.go:9) MOVQ AX, "".acb+280(SP)
# 赋值acb1的数组slice
0x00b1 00177 (function.go:10) ADDQ $2, AX
0x00b5 00181 (function.go:10) MOVQ AX, "".acb1+520(SP)
0x00bd 00189 (function.go:10) MOVQ $2, "".acb1+528(SP)
0x00c9 00201 (function.go:10) MOVQ $4, "".acb1+536(SP)
# 直接赋值acd
0x00d5 00213 (function.go:12) MOVL "".statictmp_0(SB), AX
0x00db 00219 (function.go:12) MOVWLZX "".statictmp_0+4(SB), CX
0x00e2 00226 (function.go:12) MOVL AX, "".acd+52(SP)
0x00e6 00230 (function.go:12) MOVW CX, "".acd+56(SP)
# 赋值acd1
0x00eb 00235 (function.go:13) LEAQ "".acd+52(SP), AX
0x00f6 00246 (function.go:13) LEAQ "".acd+54(SP), AX
0x00fb 00251 (function.go:13) MOVQ AX, "".acd1+496(SP)
0x0103 00259 (function.go:13) MOVQ $2, "".acd1+504(SP)
0x010f 00271 (function.go:13) MOVQ $4, "".acd1+512(SP)
# 赋值acd1[1] = 222, 即acd[3] = 222
0x011d 00285 (function.go:14) MOVB $-34, "".acd+55(SP)
# 赋值abb
0x0122 00290 (function.go:16) MOVW $0, ""..autotmp_17+50(SP)
0x0129 00297 (function.go:16) LEAQ ""..autotmp_17+50(SP), AX
0x012e 00302 (function.go:16) MOVQ AX, ""..autotmp_16+312(SP)
0x0138 00312 (function.go:16) MOVB $1, ""..autotmp_17+50(SP)
0x013d 00317 (function.go:16) MOVQ ""..autotmp_16+312(SP), AX
0x0147 00327 (function.go:16) MOVB $1, 1(AX)
0x014b 00331 (function.go:16) MOVQ ""..autotmp_16+312(SP), AX
0x0153 00339 (function.go:16) MOVQ AX, "".abb+288(SP)
# 赋值as(string)的结构体stringStruct
0x015b 00347 (function.go:18) LEAQ go.string."sasasa"(SB), AX
0x0162 00354 (function.go:18) MOVQ AX, "".as+360(SP)
0x016a 00362 (function.go:18) MOVQ $6, "".as+368(SP)
# 赋值as1(string)的结构体stringStruct
0x017a 00378 (function.go:19) LEAQ go.string."sasasa"+1(SB), AX
0x0181 00385 (function.go:19) MOVQ AX, "".as1+344(SP)
0x0189 00393 (function.go:19) MOVQ $1, "".as1+352(SP)
# runtime.stringtoslicebyte 的第一个参数autotmp_18+120(SP) 类型是*runtime.tmpBuf, 第二个参数是as
0x0195 00405 (function.go:20) LEAQ ""..autotmp_18+120(SP), AX
0x019a 00410 (function.go:20) MOVQ AX, (SP)
0x019e 00414 (function.go:20) MOVQ "".as+368(SP), AX
0x01a6 00422 (function.go:20) MOVQ "".as+360(SP), CX
0x01ae 00430 (function.go:20) MOVQ CX, 8(SP)
0x01b3 00435 (function.go:20) MOVQ AX, 16(SP)
0x01b8 00440 (function.go:20) CALL runtime.stringtoslicebyte(SB)
# 返回值赋给ab
0x01bd 00445 (function.go:20) MOVQ 40(SP), AX
0x01c2 00450 (function.go:20) MOVQ 32(SP), CX
0x01c7 00455 (function.go:20) MOVQ 24(SP), DX
0x01cc 00460 (function.go:20) MOVQ DX, "".ab+544(SP)
0x01d4 00468 (function.go:20) MOVQ CX, "".ab+552(SP)
0x01dc 00476 (function.go:20) MOVQ AX, "".ab+560(SP)
# runtime.stringtoslicerune 的第一个参数autotmp_19+152(SP) 类型是*runtime.tmpBuf, 第二个参数是as
0x01e4 00484 (function.go:21) LEAQ ""..autotmp_19+152(SP), AX
0x01ec 00492 (function.go:21) MOVQ AX, (SP)
0x01f0 00496 (function.go:21) MOVQ "".as+368(SP), AX
0x01f8 00504 (function.go:21) MOVQ "".as+360(SP), CX
0x0200 00512 (function.go:21) MOVQ CX, 8(SP)
0x0205 00517 (function.go:21) MOVQ AX, 16(SP)
0x020a 00522 (function.go:21) CALL runtime.stringtoslicerune(SB)
# 返回值赋给ar
0x020f 00527 (function.go:21) MOVQ 32(SP), AX
0x0214 00532 (function.go:21) MOVQ 40(SP), CX
0x0219 00537 (function.go:21) MOVQ 24(SP), DX
0x021e 00542 (function.go:21) MOVQ DX, "".ar+472(SP)
0x0226 00550 (function.go:21) MOVQ AX, "".ar+480(SP)
0x022e 00558 (function.go:21) MOVQ CX, "".ar+488(SP)
# runtime.stringtoslicerune 的第一个参数autotmp_20+88(SP) 类型是*runtime.tmpBuf, 第二个参数是ar
0x0236 00566 (function.go:23) LEAQ ""..autotmp_20+88(SP), BX
0x023b 00571 (function.go:23) MOVQ BX, (SP)
0x023f 00575 (function.go:23) MOVQ DX, 8(SP)
0x0244 00580 (function.go:23) MOVQ AX, 16(SP)
0x0249 00585 (function.go:23) MOVQ CX, 24(SP)
0x024e 00590 (function.go:23) CALL runtime.slicerunetostring(SB)
# 返回值赋给as2
0x0253 00595 (function.go:23) MOVQ 40(SP), AX
0x0258 00600 (function.go:23) MOVQ 32(SP), CX
0x025d 00605 (function.go:23) MOVQ CX, "".as2+328(SP)
0x0265 00613 (function.go:23) MOVQ AX, "".as2+336(SP)
# 赋值给cc, 指针指向0, len和cap也都是0
0x026d 00621 (function.go:25) MOVQ $0, "".cc+448(SP)
0x0279 00633 (function.go:25) XORPS X0, X0
0x027c 00636 (function.go:25) MOVUPS X0, "".cc+456(SP)
# 赋值给cc2, 指针指向autotmp_21+48(SP), len和cap也都是0
0x0284 00644 (function.go:26) LEAQ ""..autotmp_21+48(SP), AX
0x028d 00653 (function.go:26) MOVQ AX, "".cc2+424(SP)
0x0295 00661 (function.go:26) XORPS X0, X0
0x0298 00664 (function.go:26) MOVUPS X0, "".cc2+432(SP)
# 赋值给cc3, 指针指向autotmp_21+48(SP), len和cap也都是0
0x02a0 00672 (function.go:27) LEAQ ""..autotmp_24+48(SP), AX
0x02a5 00677 (function.go:27) MOVQ AX, ""..autotmp_22+304(SP)
0x02b1 00689 (function.go:27) MOVQ AX, "".cc3+400(SP)
0x02b9 00697 (function.go:27) XORPS X0, X0
0x02bc 00700 (function.go:27) MOVUPS X0, "".cc3+408(SP)
# 赋值给cc4
0x02c4 00708 (function.go:28) LEAQ ""..autotmp_26+64(SP), AX
0x02c9 00713 (function.go:28) MOVQ AX, ""..autotmp_25+296(SP)
0x02d3 00723 (function.go:28) MOVQ "".statictmp_1(SB), AX
0x02da 00730 (function.go:28) MOVQ AX, ""..autotmp_26+64(SP)
0x02df 00735 (function.go:28) MOVUPS "".statictmp_1+8(SB), X0
0x02e6 00742 (function.go:28) MOVUPS X0, ""..autotmp_26+72(SP)
0x02eb 00747 (function.go:28) MOVQ ""..autotmp_25+296(SP), AX
0x02f7 00759 (function.go:28) MOVQ AX, "".cc4+376(SP)
0x02ff 00767 (function.go:28) MOVQ $3, "".cc4+384(SP)
0x030b 00779 (function.go:28) MOVQ $3, "".cc4+392(SP)
# 返回
0x0317 00791 (function.go:44) MOVQ 568(SP), BP
0x031f 00799 (function.go:44) ADDQ $576, SP
0x0326 00806 (function.go:44) RET
0x0327 00807 (function.go:44) NOP
0x0327 00807 (function.go:7) CALL runtime.morestack_noctxt(SB)
0x032c 00812 (function.go:7) JMP 0
0x0000 65 48 8b 0c 25 00 00 00 00 48 8d 84 24 40 fe ff eH..%....H..$@..
0x0010 ff 48 3b 41 10 0f 86 0c 03 00 00 48 81 ec 40 02 .H;A.......H..@.
0x0020 00 00 48 89 ac 24 38 02 00 00 48 8d ac 24 38 02 ..H..$8...H..$8.
0x0030 00 00 c7 44 24 3a 00 00 00 00 66 c7 44 24 3e 00 ...D$:....f.D$>.
0x0040 00 48 8d 44 24 3a 48 89 84 24 40 01 00 00 84 00 .H.D$:H..$@.....
0x0050 c6 44 24 3a 01 48 8b 84 24 40 01 00 00 84 00 c6 .D$:.H..$@......
0x0060 40 01 02 48 8b 84 24 40 01 00 00 84 00 c6 40 02 @..H..$@......@.
0x0070 03 48 8b 84 24 40 01 00 00 84 00 c6 40 03 04 48 .H..$@......@..H
0x0080 8b 84 24 40 01 00 00 84 00 c6 40 04 05 48 8b 84 ..$@......@..H..
0x0090 24 40 01 00 00 84 00 c6 40 05 0b 48 8b 84 24 40 $@......@..H..$@
0x00a0 01 00 00 48 89 84 24 18 01 00 00 84 00 eb 00 eb ...H..$.........
0x00b0 00 48 83 c0 02 48 89 84 24 08 02 00 00 48 c7 84 .H...H..$....H..
0x00c0 24 10 02 00 00 02 00 00 00 48 c7 84 24 18 02 00 $........H..$...
0x00d0 00 04 00 00 00 8b 05 00 00 00 00 0f b7 0d 00 00 ................
0x00e0 00 00 89 44 24 34 66 89 4c 24 38 48 8d 44 24 34 ...D$4f.L$8H.D$4
0x00f0 84 00 eb 00 eb 00 48 8d 44 24 36 48 89 84 24 f0 ......H.D$6H..$.
0x0100 01 00 00 48 c7 84 24 f8 01 00 00 02 00 00 00 48 ...H..$........H
0x0110 c7 84 24 00 02 00 00 04 00 00 00 eb 00 c6 44 24 ..$...........D$
0x0120 37 de 66 c7 44 24 32 00 00 48 8d 44 24 32 48 89 7.f.D$2..H.D$2H.
0x0130 84 24 38 01 00 00 84 00 c6 44 24 32 01 48 8b 84 .$8......D$2.H..
0x0140 24 38 01 00 00 84 00 c6 40 01 01 48 8b 84 24 38 $8......@..H..$8
0x0150 01 00 00 48 89 84 24 20 01 00 00 48 8d 05 00 00 ...H..$ ...H....
0x0160 00 00 48 89 84 24 68 01 00 00 48 c7 84 24 70 01 ..H..$h...H..$p.
0x0170 00 00 06 00 00 00 eb 00 eb 00 48 8d 05 00 00 00 ..........H.....
0x0180 00 48 89 84 24 58 01 00 00 48 c7 84 24 60 01 00 .H..$X...H..$`..
0x0190 00 01 00 00 00 48 8d 44 24 78 48 89 04 24 48 8b .....H.D$xH..$H.
0x01a0 84 24 70 01 00 00 48 8b 8c 24 68 01 00 00 48 89 .$p...H..$h...H.
0x01b0 4c 24 08 48 89 44 24 10 e8 00 00 00 00 48 8b 44 L$.H.D$......H.D
0x01c0 24 28 48 8b 4c 24 20 48 8b 54 24 18 48 89 94 24 $(H.L$ H.T$.H..$
0x01d0 20 02 00 00 48 89 8c 24 28 02 00 00 48 89 84 24 ...H..$(...H..$
0x01e0 30 02 00 00 48 8d 84 24 98 00 00 00 48 89 04 24 0...H..$....H..$
0x01f0 48 8b 84 24 70 01 00 00 48 8b 8c 24 68 01 00 00 H..$p...H..$h...
0x0200 48 89 4c 24 08 48 89 44 24 10 e8 00 00 00 00 48 H.L$.H.D$......H
0x0210 8b 44 24 20 48 8b 4c 24 28 48 8b 54 24 18 48 89 .D$ H.L$(H.T$.H.
0x0220 94 24 d8 01 00 00 48 89 84 24 e0 01 00 00 48 89 .$....H..$....H.
0x0230 8c 24 e8 01 00 00 48 8d 5c 24 58 48 89 1c 24 48 .$....H.$XH..$H
0x0240 89 54 24 08 48 89 44 24 10 48 89 4c 24 18 e8 00 .T$.H.D$.H.L$...
0x0250 00 00 00 48 8b 44 24 28 48 8b 4c 24 20 48 89 8c ...H.D$(H.L$ H..
0x0260 24 48 01 00 00 48 89 84 24 50 01 00 00 48 c7 84 $H...H..$P...H..
0x0270 24 c0 01 00 00 00 00 00 00 0f 57 c0 0f 11 84 24 $.........W....$
0x0280 c8 01 00 00 48 8d 44 24 30 84 00 eb 00 48 89 84 ....H.D$0....H..
0x0290 24 a8 01 00 00 0f 57 c0 0f 11 84 24 b0 01 00 00 $.....W....$....
0x02a0 48 8d 44 24 30 48 89 84 24 30 01 00 00 84 00 eb H.D$0H..$0......
0x02b0 00 48 89 84 24 90 01 00 00 0f 57 c0 0f 11 84 24 .H..$.....W....$
0x02c0 98 01 00 00 48 8d 44 24 40 48 89 84 24 28 01 00 ....H.D$@H..$(..
0x02d0 00 84 00 48 8b 05 00 00 00 00 48 89 44 24 40 0f ...H......H.D$@.
0x02e0 10 05 00 00 00 00 0f 11 44 24 48 48 8b 84 24 28 ........D$HH..$(
0x02f0 01 00 00 84 00 eb 00 48 89 84 24 78 01 00 00 48 .......H..$x...H
0x0300 c7 84 24 80 01 00 00 03 00 00 00 48 c7 84 24 88 ..$........H..$.
0x0310 01 00 00 03 00 00 00 48 8b ac 24 38 02 00 00 48 .......H..$8...H
0x0320 81 c4 40 02 00 00 c3 e8 00 00 00 00 e9 cf fc ff ..@.............
0x0330 ff .
rel 5+4 t=16 TLS+0
rel 215+4 t=15 "".statictmp_0+0
rel 222+4 t=15 "".statictmp_0+4
rel 350+4 t=15 go.string."sasasa"+0
rel 381+4 t=15 go.string."sasasa"+1
rel 441+4 t=8 runtime.stringtoslicebyte+0
rel 523+4 t=8 runtime.stringtoslicerune+0
rel 591+4 t=8 runtime.slicerunetostring+0
rel 726+4 t=15 "".statictmp_1+0
rel 738+4 t=15 "".statictmp_1+8
rel 808+4 t=8 runtime.morestack_noctxt+0







































































































































































































































位置 变量 注释
576(sp) 函数返回点, 调用函数的时候回先
568(sp) BP
560(SP) ab slice
552(SP) ab slice
544(SP) ab slice
536(SP) acb1 slice
528(SP) acb1 slice
520(SP) acb1 slice
512(SP) acd1 slice
504(SP) acd1 slice
496(SP) acd1 slice
488(SP) ar slice
480(SP) ar slice
472(SP) ar slice
464(SP) cc slice
456(SP) cc slice
448(SP) cc slice
440(SP) cc2 slice
432(SP) cc2 slice
424(SP) cc2 slice
368(SP) as string
360(SP) as string
352(SP) as1 string
344(SP) as1 string
336(SP) as2 string
328(SP) as2 string
320(SP) autotmp_14 acb读取的值
312(SP) autotmp_16 abb读取的值
304(SP) autotmp_22 autotmp_24, autotmp_24 位置
296(SP) autotmp_25 cc4数组 位置
288(SP) abb 指向数组的指针
280(SP) acb 指向数组的指针
152(SP) autotmp_19 stringtoslicerune的第一个参数, 类型是*runtime.tmpBuf占32Bit
120(SP) autotmp_18 stringtoslicebyte的第一个参数, 类型是*runtime.tmpBuf占32Bit
88(SP) autotmp_20 slicerunetostring的第一个参数, 类型是*runtime.tmpBuf占32Bit
80(SP) autotmp_26 变量c4的指向数组
72(SP) autotmp_26 变量c4的指向数组
64(SP) autotmp_26 变量c4的指向数组
62(SP) autotmp_15 变量acb的指向数组
58(SP) autotmp_15 变量acb的指向数组
54(SP) acd[2:] 数组[2]
52(SP) acd 数组
50(SP) autotmp_17 变量abb的指向数组, 2Bit
48(SP) autotmp_24, autotmp_24 cc3, cc2,指针指向的位置


有疑问加站长微信联系






推荐阅读
  • ShiftLeft:将静态防护与运行时防护结合的持续性安全防护解决方案
    ShiftLeft公司是一家致力于将应用的静态防护和运行时防护与应用开发自动化工作流相结合以提升软件开发生命周期中的安全性的公司。传统的安全防护方式存在误报率高、人工成本高、耗时长等问题,而ShiftLeft提供的持续性安全防护解决方案能够解决这些问题。通过将下一代静态代码分析与应用开发自动化工作流中涉及的安全工具相结合,ShiftLeft帮助企业实现DevSecOps的安全部分,提供高效、准确的安全能力。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • Android系统源码分析Zygote和SystemServer启动过程详解
    本文详细解析了Android系统源码中Zygote和SystemServer的启动过程。首先介绍了系统framework层启动的内容,帮助理解四大组件的启动和管理过程。接着介绍了AMS、PMS等系统服务的作用和调用方式。然后详细分析了Zygote的启动过程,解释了Zygote在Android启动过程中的决定作用。最后通过时序图展示了整个过程。 ... [详细]
  • 本文介绍了Java调用Windows下某些程序的方法,包括调用可执行程序和批处理命令。针对Java不支持直接调用批处理文件的问题,提供了一种将批处理文件转换为可执行文件的解决方案。介绍了使用Quick Batch File Compiler将批处理脚本编译为EXE文件,并通过Java调用可执行文件的方法。详细介绍了编译和反编译的步骤,以及调用方法的示例代码。 ... [详细]
  • Java编程思想一书中第21章并发中关于线程间协作的一节中有个关于汽车打蜡与抛光的小例子(原书的704页)。这个例子主要展示的是两个线程如何通过wait ... [详细]
  • vb.net不用多线程如何同时运行两个过程?不用多线程?即使用多线程,也不会是“同时”执行,题主只要略懂一些计算机编译原理就能明白了。不用多线程更不可能让两个过程同步执行了。不过可 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 本文探讨了C语言中指针的应用与价值,指针在C语言中具有灵活性和可变性,通过指针可以操作系统内存和控制外部I/O端口。文章介绍了指针变量和指针的指向变量的含义和用法,以及判断变量数据类型和指向变量或成员变量的类型的方法。还讨论了指针访问数组元素和下标法数组元素的等价关系,以及指针作为函数参数可以改变主调函数变量的值的特点。此外,文章还提到了指针在动态存储分配、链表创建和相关操作中的应用,以及类成员指针与外部变量的区分方法。通过本文的阐述,读者可以更好地理解和应用C语言中的指针。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • loader资源模块加载器webpack资源模块加载webpack内部(内部loader)默认只会处理javascript文件,也就是说它会把打包过程中所有遇到的 ... [详细]
  • 初识java关于JDK、JRE、JVM 了解一下 ... [详细]
  • 核心代码第一种声音[DllImport(Kernel32.dll)]引入命名空间usingSystem.Runtime.InteropServices;publicstat ... [详细]
author-avatar
jzhs5340636
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有