-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
1617 lines (1417 loc) · 78.9 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html lang="zh-cmn-Hans">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>ZhangBinchen's Blog</title>
<!--link rel="stylesheet" href="//cdn.jsdelivr.net/highlight.js/9.10.0/styles/github-gist.min.css"-->
<link rel="stylesheet" href="//cdn.jsdelivr.net/highlight.js/9.10.0/styles/github-gist.min.css">
<link rel="stylesheet" href="/css/style.css">
</head>
<body>
<div class="Shell">
<aside class='SideBar'>
<section class='avatar' style="background-image: url()">
<div class='av-pic' style="background-image: url(https://avatars3.githubusercontent.com/u/26861951?s=400&u=097c794be5974849f47c6afd8cc1a191ee90eb20&v=4)">
</div>
</section>
<section class='menu'>
<div>ZhangBinchen's Blog</div>
<div>E-mail:[email protected]</div>
<ul>
<a href="/" class="Btn">
<li>Home</li>
</a>
<a href="/archives/" class="Btn">
<li>时间轴</li>
</a>
</ul>
</section>
<section class="media">
<a href="https://github.com/zhangbinchen">
<img src="/assets/github.svg" />
</a>
</section>
</aside>
<div class="container">
<div data-pager-shell>
<ul class="Index">
<li>
<article class='ListView'>
<header class="title">
<h1>
<a href="/2018/07/12/类和对象/">类和对象</a>
</h1>
<div class='ListMeta'>
<time datetime="2018-07-11T16:00:00.000Z" itemprop="datePublished">
2018-07-12
</time>
|
<ul>
<li class="meta-text">
{ <a href="/tags/C/">C++</a> }
</li>
</ul>
/
<ul>
<li class="meta-text">
{ <a href="/categories/study/">study</a> }
</li>
</ul>
</div>
</header>
<div>
<h3 id="C和C-中struct的区别"><a href="#C和C-中struct的区别" class="headerlink" title="C和C++中struct的区别"></a>C和C++中struct的区别</h3><ul>
<li>c语言中struct只有变量</li>
<li>c++中struct 既有变量,也有函数</li>
</ul>
<h3 id="类的封装"><a href="#类的封装" class="headerlink" title="类的封装"></a>类的封装</h3><ol>
<li>属性和变量合成一个整体</li>
<li>给属性和函数增加访问权限</li>
</ol>
<ul>
<li>封装:<blockquote>
<ol>
<li>把变量(属性)和函数(操作)合成一个整体,封装在一个类中</li>
<li>对变量和函数进行访问控制</li>
</ol>
</blockquote>
</li>
<li>访问权限<blockquote>
<ol>
<li>在类的内部(作用范围内),没有访问权限之分,所有成员可以互相访问</li>
<li>在类的外部(作用范围外),访问权限才有意义:public,private,protected</li>
<li>在类的外部,只有public修饰的成员才能被访问,在没有涉及继承与派生时<br>【private和protected是同等级的,外部不允许访问】<br>|访问属性|属性|对象内部|对象外部|<br>|:—-:|:—–:|:—-:|:—-:|<br>|public|公有|可访问|可访问|<br>|protected|保护|可访问|不可访问|<br>|private|私有|可访问|不可访问|</li>
</ol>
</blockquote>
</li>
</ul>
<figure class="highlight cpp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#<span class="meta-keyword">include</span><span class="meta-string"><iostream></span></span></span><br><span class="line"><span class="keyword">using</span> <span class="keyword">namespace</span> <span class="built_in">std</span>;</span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Person</span></span></span><br><span class="line"><span class="class">{</span></span><br><span class="line"><span class="keyword">public</span>:</span><br><span class="line"> <span class="function"><span class="keyword">void</span> <span class="title">Dose</span><span class="params">()</span></span></span><br><span class="line"><span class="function"> </span>{</span><br><span class="line"> <span class="built_in">cout</span> << <span class="string">"兰帕德成就苏亚雷斯"</span> << <span class="built_in">endl</span>;</span><br><span class="line"> }</span><br><span class="line"><span class="keyword">public</span>: <span class="comment">/*公共外部可访问*/</span></span><br><span class="line"> <span class="keyword">int</span> mTall;</span><br><span class="line"><span class="keyword">protected</span>: <span class="comment">/*保护外部不可访问*/</span></span><br><span class="line"> <span class="keyword">int</span> mMoney;</span><br><span class="line"><span class="keyword">private</span>: <span class="comment">/*私有外部不可访问*/</span></span><br><span class="line"> <span class="keyword">int</span> mAge;</span><br><span class="line">};</span><br><span class="line"><span class="function"><span class="keyword">int</span> <span class="title">main</span><span class="params">()</span></span></span><br><span class="line"><span class="function"></span>{</span><br><span class="line">Person p;</span><br><span class="line"> p.mTall = <span class="number">11</span>;</span><br><span class="line"> <span class="comment">//p.mMoney 保护成员外部无法访问</span></span><br><span class="line"> <span class="comment">//p.mAge 私有成员外部无法访问</span></span><br><span class="line"> p.Dose();</span><br><span class="line"></span><br><span class="line"> system(<span class="string">"pause"</span>);</span><br><span class="line"> <span class="keyword">return</span> EXIT_SUCCESS;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h3 id="struct和class的区别"><a href="#struct和class的区别" class="headerlink" title="struct和class的区别"></a>struct和class的区别</h3><p>class默认访问权限为private,struct默认访问权限为public</p>
<figure class="highlight cpp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#<span class="meta-keyword">include</span><span class="meta-string"><iostream></span></span></span><br><span class="line"><span class="keyword">using</span> <span class="keyword">namespace</span> <span class="built_in">std</span>;</span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">A</span> /*默认<span class="title">private</span>权限*/</span></span><br><span class="line"><span class="class">{</span></span><br><span class="line"> <span class="keyword">int</span> mAge;</span><br><span class="line">};</span><br><span class="line"><span class="class"><span class="keyword">struct</span> <span class="title">B</span> /*默认<span class="title">public</span>权限*/</span></span><br><span class="line"><span class="class">{</span></span><br><span class="line"> <span class="keyword">int</span> mAge;</span><br><span class="line">};</span><br><span class="line"><span class="function"><span class="keyword">void</span> <span class="title">test</span><span class="params">()</span></span></span><br><span class="line"><span class="function"></span>{</span><br><span class="line"> A a;</span><br><span class="line"> B b;</span><br><span class="line"> <span class="comment">/*a.mAge; err无法访问私有成员 */</span></span><br><span class="line"> b.mAge;</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">int</span> <span class="title">main</span><span class="params">()</span></span></span><br><span class="line"><span class="function"></span>{</span><br><span class="line"> test();</span><br><span class="line"></span><br><span class="line"> system(<span class="string">"pause"</span>);</span><br><span class="line"> <span class="keyword">return</span> EXIT_SUCCESS;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h3 id="将变量设为private"><a href="#将变量设为private" class="headerlink" title="将变量设为private"></a>将变量设为private</h3><ol>
<li>可赋予客户端访问数据的一致性</li>
<li>可细微划分访问控制<br>【尽量将成员属性设置为私有】</li>
</ol>
<ul>
<li>好处:<blockquote>
<p>自己可以控制读写权限<br>可以对设置内容加有效性验证</p>
</blockquote>
</li>
</ul>
<figure class="highlight cpp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line"></span><br></pre></td></tr></table></figure>
</div>
</article>
</li>
<li>
<article class='ListView'>
<header class="title">
<h1>
<a href="/2018/07/11/C++/">初识C++</a>
</h1>
<div class='ListMeta'>
<time datetime="2018-07-10T16:00:00.000Z" itemprop="datePublished">
2018-07-11
</time>
|
<ul>
<li class="meta-text">
{ <a href="/tags/C/">C++</a> }
</li>
</ul>
/
<ul>
<li class="meta-text">
{ <a href="/categories/study/">study</a> }
</li>
</ul>
</div>
</header>
<div>
<h3 id="C-概述"><a href="#C-概述" class="headerlink" title="C++概述"></a>C++概述</h3><ul>
<li>c++是对c的扩展,是c语言的超集。</li>
<li>库:是编程模块的集合,可以在程序中调用他们。库对很多常见的编程问题提供了可靠的解决办法,因此可以节省程序员大量的时间和工作量。</li>
<li>c++在c的基础上添加了面向对象编程和泛型编程的支持,并且继承了c语言的高效、简洁,快速和可移植的传统。</li>
<li>c++融合了3种不同的编程方式:<blockquote>
<p>-c语言代表的过程性语言<br>-c++在c语言基础上添加的类代表的面向对象的语言<br>-c++模板支持的泛型编程。<br>【ANSI在1998年定制了c++第一套标准】</p>
</blockquote>
<h3 id="面向过程"><a href="#面向过程" class="headerlink" title="面向过程"></a>面向过程</h3>【面向过程思想核心】:功能分解,自顶向下,逐层细化(程序=数据结构+算法)<h3 id="面向对象"><a href="#面向对象" class="headerlink" title="面向对象"></a>面向对象</h3></li>
<li>在面向对象中,算法与数据结构被看作一个整体,称作对象</li>
<li>对象=算法+数据结构</li>
<li>程序=对象+对象……<br>【面向对象三大特性】</li>
</ul>
<ol>
<li>封装</li>
<li>继承</li>
<li>多态</li>
</ol>
<h3 id="C-对C的扩展"><a href="#C-对C的扩展" class="headerlink" title="C++对C的扩展"></a>C++对C的扩展</h3><ol>
<li>::作用域用算符<figure class="highlight cpp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#<span class="meta-keyword">include</span> <span class="meta-string"><iostream></span></span></span><br><span class="line"><span class="keyword">int</span> a = <span class="number">10</span>;</span><br><span class="line"><span class="function"><span class="keyword">int</span> <span class="title">main</span><span class="params">()</span> <span class="comment">/*全局变量和局部变量重名用::作用于运算符区分*/</span></span></span><br><span class="line"><span class="function"></span>{</span><br><span class="line"> <span class="keyword">int</span> a = <span class="number">121</span>;</span><br><span class="line"> <span class="built_in">std</span>::<span class="built_in">cout</span> << <span class="string">"局部变量a:"</span> << a << <span class="built_in">std</span>::<span class="built_in">endl</span>;</span><br><span class="line"> <span class="built_in">std</span>::<span class="built_in">cout</span> << <span class="string">"全局变量a:"</span> << ::a << <span class="built_in">std</span>::<span class="built_in">endl</span>;</span><br><span class="line"> system(<span class="string">"pause"</span>);</span><br><span class="line"> <span class="keyword">return</span> <span class="number">0</span>;</span><br><span class="line"></span><br><span class="line">}</span><br></pre></td></tr></table></figure>
</li>
</ol>
<p>作用域运算符可以用来解决局部变量与全局变量的重名问题,在局部变量作用域内,可以用::对<br>被屏蔽的同名全局变量进行访问(::前什么都不加表示全局作用域)</p>
<ol start="2">
<li>名字控制</li>
</ol>
<ul>
<li>c++允许我们对名字的产生和名字的可见性进行控制</li>
<li>c++中我们通过命名空间控制对名字的访问(namespace)<blockquote>
<p>namespace</p>
</blockquote>
</li>
<li>用途:解决名称冲突</li>
<li>命名空间下可存放:变量、函数、结构体、类……</li>
<li>命名空间必须要声明在全局作用域</li>
<li>命名空间可以嵌套命名空间</li>
<li>命名空间是开放的,可以随时将新成员添加到命名空间下</li>
<li>命名空间可以匿名</li>
<li>命名空间可以起别名</li>
<li>命名空间的声明和实现可分离</li>
</ul>
<p>2.1. using声明</p>
<ul>
<li>using声明可使指定的标识符可用</li>
<li>当using声明与就近原则同时出现,出错,尽量避免<br>2.2. using编译指令</li>
<li>当using编译指令与就近原则同时出现,优先使用就近</li>
<li>当using编译指令有多个,需要加作用域区分</li>
<li>【注意】使用using声明或 using编译指令会增加命名冲突的可能性,也就是说,如果有命名空间,并在代码中使用作用域解析运算符,则不会出现二义性。</li>
</ul>
<figure class="highlight cpp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#<span class="meta-keyword">include</span><span class="meta-string"><iostream></span></span></span><br><span class="line"><span class="keyword">using</span> <span class="keyword">namespace</span> <span class="built_in">std</span>;</span><br><span class="line"><span class="keyword">namespace</span> KIngGlory</span><br><span class="line">{</span><br><span class="line"> <span class="keyword">int</span> sunwukongId = <span class="number">1</span>;</span><br><span class="line">}</span><br><span class="line"><span class="keyword">namespace</span> LOL</span><br><span class="line">{</span><br><span class="line"> <span class="keyword">int</span> sunwukongId = <span class="number">3</span>;</span><br><span class="line">}</span><br><span class="line"><span class="function"><span class="keyword">void</span> <span class="title">test01</span><span class="params">()</span></span></span><br><span class="line"><span class="function"></span>{</span><br><span class="line"> <span class="keyword">int</span> sunwukongId = <span class="number">2</span>;</span><br><span class="line"><span class="comment">/* using KIngGlory::sunwukongId;</span></span><br><span class="line"><span class="comment"> err,当using声明与就近原则同时出现,出错,尽量避免</span></span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment">*/</span></span><br><span class="line"> <span class="built_in">cout</span> << sunwukongId << <span class="built_in">endl</span>;</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">void</span> <span class="title">test02</span><span class="params">()</span></span></span><br><span class="line"><span class="function"></span>{</span><br><span class="line"> <span class="comment">//int sunwukongId = 2;/*当using编译指令与就近原则同时出现,优先使用就近原则*/</span></span><br><span class="line"> <span class="keyword">using</span> <span class="keyword">namespace</span> KIngGlory;</span><br><span class="line"> <span class="keyword">using</span> <span class="keyword">namespace</span> LOL;</span><br><span class="line"> <span class="built_in">cout</span> << KIngGlory::sunwukongId << <span class="built_in">endl</span>;<span class="comment">/*当using编译指令有多个,需要加作用域区分*/</span></span><br><span class="line"> <span class="built_in">cout</span> << LOL::sunwukongId << <span class="built_in">endl</span>;</span><br><span class="line">}</span><br><span class="line"><span class="function"><span class="keyword">int</span> <span class="title">main</span><span class="params">()</span></span></span><br><span class="line"><span class="function"></span>{</span><br><span class="line"> <span class="comment">//test01();</span></span><br><span class="line"> test02();</span><br><span class="line"></span><br><span class="line"> system(<span class="string">"pause"</span>);</span><br><span class="line"> <span class="keyword">return</span> EXIT_SUCCESS;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<ol start="3">
<li>c++增强部分</li>
</ol>
<ul>
<li>全局变量检测增强 c++严格检测出重定义</li>
<li>函数检测增强,返回值检测、形参类型检测、函数调用参数个数</li>
<li>类型转换检测曾强;</li>
<li>struct(结构体)增强 (c中不可以有函数必须有关键字struct)c++可以放函数、创建结构体变量,可以简化关键字struct</li>
<li>bool类型扩展(bool类型占一个字节大小)(c语言下没有bool类型 c++有bool类型)true(1) false(0)</li>
<li>三目运算符增强(a<b?a:b)=100;c++下表示给三目运算结果赋值。</li>
<li>c语言三目运算表达式返回值为数据值,为右值,不能赋值</li>
<li>c++三目运算表达式返回值为变量本身(引用)为左值,可以赋值<br>【左值和右值的概念】<br>在c++中可以放在赋值操作符左边的是左值,可以放到操作赋值符右面的是右值。有些变量既可以当左值又可以当右值<br>左值为:Lvalue,L代表Location表示内存可以寻址,可以赋值<br>右值为:Rvalue,R代表Read,就是可以知道它的值<br>int temp=10;temp在内存中有地址,10没有,但是可以Read到它的值</li>
<li>const增强<blockquote>
<p>全局const受到常量区保护,运行修改失败(c、c++结论相同)<br>局部const,c++下const修饰的变量称为常量,可以用来初始化数组(c语言中const是伪常量,不可以初始化数组分配到栈上)</p>
</blockquote>
</li>
<li>c语言中全局const会被存储到制度数据段,c++中全局const当声明extern或者对变量取址时,编译器会分配存储地址,变量存储在只读数据段,两个都受其到了保护不可修改</li>
<li>c语言中局部const存储在堆栈区,只是不能通过变量直接修改const制度变量的值,但是可以跳过编译器的检查,通过指针间接修改该const值</li>
<li>c中const默认为外部链接,c++中const默认为内部链接,当c语言两个文件中都有const int a的时候编译器会报重定义错误。而在c++中就不会,因为c++中的const默认是内部链接如果想让c++中的const具有外部链接属性,必须显示声明为:extern const int a=10;<br>【c语言】<blockquote>
<p>全局const 直接修改失败,间接修改语法通过,运行失败<br>局部const 直接修改失败,间接修改成功</p>
</blockquote>
</li>
</ul>
<p>【c++】</p>
<blockquote>
<p>全局const 直接修改失败,间接修改语法通过,运行失败<br>局部const 直接修改失败,间接修改失败<br>c++中const修饰的可称作常量</p>
</blockquote>
</div>
</article>
</li>
<li>
<article class='ListView'>
<header class="title">
<h1>
<a href="/2018/07/09/数据结构/">数据结构</a>
</h1>
<div class='ListMeta'>
<time datetime="2018-07-08T16:00:00.000Z" itemprop="datePublished">
2018-07-09
</time>
|
<ul>
<li class="meta-text">
{ <a href="/tags/C语言/">C语言</a> }
</li>
</ul>
/
<ul>
<li class="meta-text">
{ <a href="/categories/study/">study</a> }
</li>
</ul>
</div>
</header>
<div>
<h3 id="数据结构"><a href="#数据结构" class="headerlink" title="数据结构"></a>数据结构</h3><p>数据结构是计算机存储,组织数据的方式,是相互之间存在一种或多种特定关系的数据元素集合</p>
<h4 id="算法"><a href="#算法" class="headerlink" title="算法"></a>算法</h4><p>算法是特定问题求解步骤的描述,在计算机中表现为指令的有限序列。算法是独立存在的一种解决问题的方法和【思想】</p>
<blockquote>
<ul>
<li>【以上二者区别:】</li>
<li>算法是为了解决实际问题而设计的</li>
<li>数据结构是算法需要处理的问题载体</li>
<li>算法的特性:</li>
</ul>
<ol>
<li>输入:</li>
<li>输出:</li>
<li>有穷性</li>
<li>确定性</li>
<li>可行性</li>
</ol>
</blockquote>
<h4 id="分类"><a href="#分类" class="headerlink" title="分类"></a>分类</h4><ul>
<li>逻辑结构</li>
</ul>
<ol>
<li>集合结构</li>
<li>线性结构</li>
<li>树形结构</li>
<li>图形结构 </li>
</ol>
<ul>
<li>物理结构</li>
</ul>
<ol>
<li>顺序存储结构</li>
<li>链式存储结构</li>
</ol>
</div>
</article>
</li>
<li>
<article class='ListView'>
<header class="title">
<div class='ListMeta'>
<time datetime="2018-07-01T16:00:00.000Z" itemprop="datePublished">
2018-07-02
</time>
|
<ul>
<li class="meta-text">
{ <a href="/tags/C语言/">C语言</a> }
</li>
</ul>
/
<ul>
<li class="meta-text">
{ <a href="/categories/study/">study</a> }
</li>
</ul>
</div>
</header>
<div>
</div>
</article>
</li>
<li>
<article class='ListView'>
<header class="title">
<h1>
<a href="/2018/07/01/C进阶二/">指针</a>
</h1>
<div class='ListMeta'>
<time datetime="2018-06-30T16:00:00.000Z" itemprop="datePublished">
2018-07-01
</time>
|
<ul>
<li class="meta-text">
{ <a href="/tags/C语言/">C语言</a> }
</li>
</ul>
/
<ul>
<li class="meta-text">
{ <a href="/categories/study/">study</a> }
</li>
</ul>
</div>
</header>
<div>
<ul>
<li>指针变量</li>
<li>指针是一种数据类型,占用内存空间,用来保存内存地址<figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#<span class="meta-keyword">include</span> <span class="meta-string"><stdio.h></span></span></span><br><span class="line"><span class="function"><span class="keyword">int</span> <span class="title">main</span><span class="params">()</span></span></span><br><span class="line"><span class="function"></span>{</span><br><span class="line"> <span class="keyword">int</span> *p1 = <span class="number">0x1234</span>;</span><br><span class="line"> <span class="keyword">int</span> ***p2 = <span class="number">0x1111</span>;</span><br><span class="line"> <span class="built_in">printf</span>(<span class="string">"p1size:%d\n"</span>,<span class="keyword">sizeof</span>(p1));</span><br><span class="line"> <span class="built_in">printf</span>(<span class="string">"p2size:%d\n"</span>,<span class="keyword">sizeof</span>(p2));</span><br><span class="line"></span><br><span class="line"> <span class="comment">/*指针是变量,指针本身也占内存空间,指针也可以被赋值*/</span></span><br><span class="line"> <span class="keyword">int</span> a = <span class="number">10</span>;</span><br><span class="line"> p1 = &a;</span><br><span class="line"></span><br><span class="line"> <span class="built_in">printf</span>(<span class="string">"p1 address:%p\n"</span>,&p1);</span><br><span class="line"> <span class="built_in">printf</span>(<span class="string">"p1 address:%p\n"</span>,p1);</span><br><span class="line"> <span class="built_in">printf</span>(<span class="string">"a address:%p\n"</span>,&a);</span><br><span class="line"> <span class="keyword">return</span> <span class="number">0</span>;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
</li>
</ul>
<h3 id="野指针和空指针"><a href="#野指针和空指针" class="headerlink" title="野指针和空指针"></a>野指针和空指针</h3><ul>
<li>空指针:不能向NULL或者非法内存拷贝数据</li>
<li>野指针:<blockquote>
<ol>
<li>指针变量未初始化:<br>任何指针变量刚被创建的时候不会自动成为NULL指针,他的缺省值是随机的,他会乱指一气,所以,指针变量在创建的同时应当被初始化,要么将指针设为NULL,要么指向合法内存</li>
<li>指针释放后未置空:<br>有时指针在free或delete后未赋值NULL,便会使人们认为是合法的,不要被free和delete的名字迷惑,他们只是将指针所指的内存给释放掉,但并没有把指针本身干掉,此时指针指向的就是“垃圾”内存,释放后的指针应立即将指针置为NULL,防止产生野指针</li>
<li>指针操作超越变量作用域<br>不要返回指向栈内存的指针或引用,因为栈内存在函数结束时会被释放<br>【规避野指针】<br>>1. 初始化时置NULL<br>>2. 释放时置NULL</li>
</ol>
</blockquote>
</li>
</ul>
<p>空指针可以重复释放、野指针不可以重复释放</p>
<h3 id="指针的步长"><a href="#指针的步长" class="headerlink" title="指针的步长"></a>指针的步长</h3><ul>
<li>+1后跳跃的字节数</li>
<li>解引用解出的字节数</li>
<li>自定义结构体步长<blockquote>
<p>通过offsetof(结构体名称,属性)找到属性对应的偏移量<br>offsetof引入头文件:#include<stddef.h></p>
</blockquote>
<h3 id="指针的件接赋值"><a href="#指针的件接赋值" class="headerlink" title="指针的件接赋值"></a>指针的件接赋值</h3></li>
<li>三大条件<blockquote>
<p>一个普通变量+指针变量(实参+形参)<br>建立关系<br>通过*操作内存</p>
</blockquote>
</li>
<li>利用qt操作地址修改内存</li>
</ul>
<h3 id="指针做函数参数的输入输出特性"><a href="#指针做函数参数的输入输出特性" class="headerlink" title="指针做函数参数的输入输出特性"></a>指针做函数参数的输入输出特性</h3><ul>
<li>输入特性:</li>
</ul>
<ol>
<li>在主调函数中分配内存,被调函数使用</li>
<li>分配在栈上和堆区</li>
</ol>
<ul>
<li>输出特性:</li>
</ul>
<ol>
<li>在被调函数中分配内存,主调函数使用</li>
</ol>
<h3 id="字符串操作"><a href="#字符串操作" class="headerlink" title="字符串操作"></a>字符串操作</h3>
</div>
</article>
</li>
<li>
<article class='ListView'>
<header class="title">
<h1>
<a href="/2018/06/30/C进阶一/">内存</a>
</h1>
<div class='ListMeta'>
<time datetime="2018-06-29T16:00:00.000Z" itemprop="datePublished">
2018-06-30
</time>
|
<ul>
<li class="meta-text">
{ <a href="/tags/C语言/">C语言</a> }
</li>
</ul>
/
<ul>
<li class="meta-text">
{ <a href="/categories/study/">study</a> }
</li>
</ul>
</div>
</header>
<div>
<h3 id="内存分区"><a href="#内存分区" class="headerlink" title="内存分区"></a>内存分区</h3><ul>
<li>数据类型:<blockquote>
<p>为了更好的进行内存的管理,让编译器能确定分配多少内存<br>类型是对数据的抽象<br>类型相同的数据具有相同的表示形式、存储格式及相关操作<br>程序中的所有数据都必定属于某种数据类型<br>数据类型可以理解为创建变量的摸具:固定大小内存的别名</p>
</blockquote>
</li>
<li>数据类型别名(typedef)</li>
<li>typedef</li>
</ul>
<ol>
<li>起别名-简化struct关键字</li>
<li>区分数据类型</li>
<li>提高代码移植性<figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#<span class="meta-keyword">include</span> <span class="meta-string"><stdio.h></span></span></span><br><span class="line"><span class="meta">#<span class="meta-keyword">include</span> <span class="meta-string"><string.h></span></span></span><br><span class="line"><span class="meta">#<span class="meta-keyword">include</span> <span class="meta-string"><stdlib.h></span></span></span><br><span class="line"><span class="keyword">typedef</span> <span class="class"><span class="keyword">struct</span> <span class="title">Person</span></span></span><br><span class="line"><span class="class">{</span></span><br><span class="line"> <span class="keyword">char</span> name[<span class="number">64</span>];</span><br><span class="line"> <span class="keyword">int</span> age;</span><br><span class="line"></span><br><span class="line">}myPerson;</span><br><span class="line"><span class="function"><span class="keyword">void</span> <span class="title">test</span><span class="params">()</span></span></span><br><span class="line"><span class="function"></span>{</span><br><span class="line"> <span class="class"><span class="keyword">struct</span> <span class="title">Person</span> <span class="title">p</span> = {</span><span class="string">"aaa"</span>,<span class="number">10</span>};</span><br><span class="line"> myPerson p2 = {<span class="string">"bbb"</span>,<span class="number">20</span>};</span><br><span class="line">}</span><br><span class="line"><span class="comment">/*区分数据类型*/</span></span><br><span class="line"><span class="function"><span class="keyword">void</span> <span class="title">test1</span><span class="params">()</span></span></span><br><span class="line"><span class="function"></span>{</span><br><span class="line"> <span class="keyword">typedef</span> <span class="keyword">char</span> *PCHAR;</span><br><span class="line"> PCHAR p1, p2;</span><br><span class="line"> <span class="keyword">char</span> *p3, *P4;</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line"><span class="comment">/*提高移植性*/</span></span><br><span class="line"><span class="keyword">typedef</span> <span class="keyword">int</span> MYINT;</span><br><span class="line"><span class="function"><span class="keyword">void</span> <span class="title">test2</span><span class="params">()</span></span></span><br><span class="line"><span class="function"></span>{</span><br><span class="line"> MYINT a = <span class="number">10</span>;</span><br><span class="line"> MYINT b = <span class="number">10</span>;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
</li>
</ol>
<div class="more-link">
<a href="/2018/06/30/C进阶一/#more">Read On »</a>
</div>
</div>
</article>
</li>
<li>
<article class='ListView'>
<header class="title">
<h1>
<a href="/2018/06/08/vim/">vim</a>
</h1>
<div class='ListMeta'>
<time datetime="2018-06-07T16:00:00.000Z" itemprop="datePublished">
2018-06-08
</time>
|
<ul>
<li class="meta-text">
{ <a href="/tags/Linux/">Linux</a> }
</li>
</ul>
/
<ul>
<li class="meta-text">
{ <a href="/categories/study/">study</a> }
</li>
</ul>
</div>
</header>
<div>
<h3 id="vim的三种模式"><a href="#vim的三种模式" class="headerlink" title="vim的三种模式"></a>vim的三种模式</h3><p>vim的三种模式:命令模式、文本编辑模式、末行模式<br>在末行模式可以直接执行shell命令(:!shell)</p>
<ul>
<li>命令模式</li>
</ul>
<table>
<thead>
<tr>
<th style="text-align:left">快捷键</th>
<th style="text-align:left">操作</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">保存退出</td>
</tr>
<tr>
<td style="text-align:left">ZZ(大写)</td>
<td style="text-align:left">保存退出</td>
</tr>
<tr>
<td style="text-align:left">代码格式化</td>
</tr>
<tr>
<td style="text-align:left">gg=G</td>
<td style="text-align:left">代码格式化</td>
</tr>
<tr>
<td style="text-align:left">光标移动</td>
</tr>
<tr>
<td style="text-align:left">h</td>
<td style="text-align:left">光标左移</td>
</tr>
<tr>
<td style="text-align:left">j</td>
<td style="text-align:left">光标下移</td>
</tr>
<tr>
<td style="text-align:left">k</td>
<td style="text-align:left">光标上移</td>
</tr>
<tr>
<td style="text-align:left">l</td>
<td style="text-align:left">光标右移</td>
</tr>
<tr>
<td style="text-align:left">w</td>
<td style="text-align:left">光标移动一个单词</td>
</tr>
<tr>
<td style="text-align:left">gg</td>
<td style="text-align:left">光标移动到文件的开头</td>
</tr>
<tr>
<td style="text-align:left">G</td>
<td style="text-align:left">光标移动到文件的末尾</td>
</tr>
<tr>
<td style="text-align:left">0</td>
<td style="text-align:left">光标移动到行首</td>
</tr>
<tr>
<td style="text-align:left">$</td>
<td style="text-align:left">光标移动到行尾</td>
</tr>
<tr>
<td style="text-align:left">nG</td>
<td style="text-align:left">行跳转,如:12G-跳转到12行</td>
</tr>
<tr>
<td style="text-align:left">删除</td>
</tr>
<tr>
<td style="text-align:left">x(小写)</td>
<td style="text-align:left">删除光标后一个字符相当于Del</td>
</tr>
<tr>
<td style="text-align:left">X(大写)</td>
<td style="text-align:left">删除光标前一个字符,相当于Baskspace</td>
</tr>
<tr>
<td style="text-align:left">dw</td>
<td style="text-align:left">删除光标开始的位置的字,包含光标所在的字符</td>
</tr>
<tr>
<td style="text-align:left">d0</td>
<td style="text-align:left">删除光标前本行所有内容,不包含光标所在字符</td>
</tr>
<tr>
<td style="text-align:left">D[d$]</td>
<td style="text-align:left">删除光标后本行所有内容,包含光标所在的字符</td>
</tr>
<tr>
<td style="text-align:left">dd</td>
<td style="text-align:left">删除光标所在的行(本质其实就是剪切)</td>
</tr>
<tr>
<td style="text-align:left">ndd</td>
<td style="text-align:left">从光标当前行向下删除指定的行数,如:15dd</td>
</tr>
<tr>
<td style="text-align:left">v/ctrl+v</td>
<td style="text-align:left">使用h、j、k、l、移动选择内容然后按d删除【ctrl+v是列模式,块选择】</td>
</tr>
<tr>
<td style="text-align:left">撤销和反撤销</td>
</tr>
<tr>
<td style="text-align:left">u</td>
<td style="text-align:left">一步一步撤销,相当于ctrl+z</td>
</tr>
<tr>
<td style="text-align:left">ctrl+r</td>
<td style="text-align:left">反撤销,相当于word中的ctrl+y</td>
</tr>
<tr>
<td style="text-align:left">复制粘贴</td>
</tr>
<tr>
<td style="text-align:left">yy</td>
<td style="text-align:left">复制当前行</td>
</tr>
<tr>
<td style="text-align:left">nyy</td>
<td style="text-align:left">赋值n行,如:10yy</td>
</tr>
<tr>
<td style="text-align:left">P(大写)</td>
<td style="text-align:left">在光标所在位置向上新开辟一行,粘贴</td>
</tr>
<tr>
<td style="text-align:left">p小写</td>
<td style="text-align:left">在光标所在位置向下新开辟一行,粘贴</td>
</tr>
<tr>
<td style="text-align:left">剪切</td>
<td style="text-align:left">按dd或ndd删除,实际将其剪切到了剪切板中,p粘贴就行</td>
</tr>
<tr>
<td style="text-align:left">v/ctrl+v</td>
<td style="text-align:left">使用h、j、k、l、移动选择内容然后按d删除【ctrl+v是列模式,块选择】,y复制,P/p光标前/后粘贴</td>
</tr>
<tr>
<td style="text-align:left">替换操作</td>
</tr>
<tr>
<td style="text-align:left">r</td>
<td style="text-align:left">替换当前字符</td>
</tr>
<tr>
<td style="text-align:left">R</td>
<td style="text-align:left">替换当前光标后的字符</td>
</tr>
<tr>
<td style="text-align:left">查找</td>
</tr>
<tr>
<td style="text-align:left">/</td>
<td style="text-align:left">/xxxx,光标位置开始搜索,按n向下,N向上</td>
</tr>
<tr>
<td style="text-align:left">?</td>
<td style="text-align:left">?xxxx,将光标移动到带搜索的字符串上,然后按n向上,N向下</td>
</tr>
<tr>
<td style="text-align:left">#</td>
<td style="text-align:left">将光标移动到带搜索的字符串上,然后按n向上搜索,N向下</td>
</tr>
<tr>
<td style="text-align:left">shift+k</td>
<td style="text-align:left">在带搜索的字符串上按shif+k,或者K(大写)可以查看相关的帮助文档</td>
</tr>
</tbody>
</table>
<ul>
<li>从命令模式进入编辑模式</li>
</ul>
<table>
<thead>
<tr>
<th style="text-align:left">快捷键</th>
<th style="text-align:left">操作</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">i</td>
<td style="text-align:left">在光标前插入</td>
</tr>
<tr>
<td style="text-align:left">a</td>
<td style="text-align:left">在光标后插入</td>
</tr>
<tr>
<td style="text-align:left">I</td>
<td style="text-align:left">在光标所在行的行首插入</td>
</tr>
<tr>
<td style="text-align:left">A</td>
<td style="text-align:left">在光标所在行的行尾插入</td>
</tr>
<tr>
<td style="text-align:left">o(小写)</td>
<td style="text-align:left">在光标所在的行的下面创建一行,行首插入</td>
</tr>
<tr>
<td style="text-align:left">O(大写)</td>
<td style="text-align:left">在光标所在行的上面创建一行,行首插入</td>
</tr>
<tr>
<td style="text-align:left">s(小写)</td>
<td style="text-align:left">删除光标后面的字符,从光标当前位置插入</td>
</tr>
<tr>
<td style="text-align:left">S(大写)</td>
<td style="text-align:left">删除光标所在当前行,从行首插入</td>
</tr>
<tr>
<td style="text-align:left">块插入(列模式)</td>
<td style="text-align:left">ctrl+v进入快选择,shift+i向前插入字符,按两下esc完成</td>
</tr>
</tbody>
</table>
<ul>
<li>末行模式(:)</li>
</ul>
<table>
<thead>
<tr>
<th style="text-align:left">快捷键</th>
<th style="text-align:left">操作</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">保存退出</td>
</tr>
<tr>
<td style="text-align:left">q</td>
<td style="text-align:left">退出</td>
</tr>
<tr>
<td style="text-align:left">q!</td>
<td style="text-align:left">强制推出,不保存修改内容</td>
</tr>
<tr>
<td style="text-align:left">w</td>
<td style="text-align:left">保存修改不退出</td>
</tr>
<tr>
<td style="text-align:left">wq</td>
<td style="text-align:left">保存退出</td>
</tr>
<tr>
<td style="text-align:left">x</td>
<td style="text-align:left">相当于wq</td>
</tr>
<tr>
<td style="text-align:left">替换操作</td>
</tr>
<tr>
<td style="text-align:left">:s/old/new/</td>
<td style="text-align:left">光标所在行的第一个old替换为new</td>
</tr>
<tr>
<td style="text-align:left">:s/old/new/g</td>
<td style="text-align:left">光标所在行所有old全部替换为new</td>
</tr>
<tr>
<td style="text-align:left">:m,ns/old/new/g</td>
<td style="text-align:left">将第m行至第n行之间的old全部替换为new</td>
</tr>
<tr>
<td style="text-align:left">:%s/old/new/g</td>
<td style="text-align:left">当前文件的所有old替换为new</td>
</tr>
<tr>
<td style="text-align:left">:1,$s/old/new/g</td>
<td style="text-align:left">当前文件的所有old替换为new</td>
</tr>
<tr>
<td style="text-align:left">:%s/old/new/gc</td>
<td style="text-align:left">当前文件的所有old替换为new(每次替换需要用户确认)</td>
</tr>
<tr>
<td style="text-align:left">快速翻屏</td>
</tr>
<tr>
<td style="text-align:left">ctrl+u</td>
<td style="text-align:left">向下翻半屏(up)光标向上移动</td>
</tr>
<tr>
<td style="text-align:left">ctrl+d</td>
<td style="text-align:left">向下翻半屏(down)光标向下移动</td>
</tr>
<tr>
<td style="text-align:left">ctrl+f</td>
<td style="text-align:left">向上翻一屏(front)</td>
</tr>
<tr>
<td style="text-align:left">ctrl+b</td>
<td style="text-align:left">向后翻一屏(back)</td>
</tr>
<tr>
<td style="text-align:left">分屏操作</td>
</tr>
<tr>
<td style="text-align:left">sp</td>
<td style="text-align:left">当前文件水平分屏</td>
</tr>
<tr>
<td style="text-align:left">vsp</td>
<td style="text-align:left">当前文件垂直分屏</td>
</tr>
<tr>
<td style="text-align:left">sp文件名</td>
<td style="text-align:left">当前文件和另一个文件水平分屏</td>
</tr>
<tr>
<td style="text-align:left">vsp文件名</td>
<td style="text-align:left">当前文件和另一个文件垂直分屏</td>
</tr>
<tr>
<td style="text-align:left">ctrl-w-w</td>
<td style="text-align:left">在多个窗口切换光标</td>
</tr>
<tr>
<td style="text-align:left">wall/wqall/xall/qall/qall!</td>
<td style="text-align:left">保存/保存退出/保存退出/退出/强制退出分屏窗口</td>
</tr>
<tr>
<td style="text-align:left">在打开文件之前分屏(n可以省略水平/垂直)</td>
<td style="text-align:left">vim -on/On file1 file2</td>
</tr>
</tbody>
</table>
<ul>
<li>末行模式回到命令模式(按两下esc或者backspace或者回车)</li>
</ul>
<h3 id="vim的配置文件"><a href="#vim的配置文件" class="headerlink" title="vim的配置文件"></a>vim的配置文件</h3><ul>
<li>用户级配置文件:~/.vimrc(修改只对当前用户作用,不会影响其他用户)</li>
<li>系统级别配置文件:/etc/vim/vimrc(修改对所有用户作用)</li>
<li>我的配置文件:<blockquote>
</blockquote>
“ vundle 环境设置<br>filetype off<br>set rtp+=~/.vim/bundle/Vundle.vim<br>“ vundle 管理的插件列表必须位于 vundle#begin() 和 vundle#end() 之间<br>call vundle#begin()<br>Plugin ‘VundleVim/Vundle.vim’<br>Plugin ‘altercation/vim-colors-solarized’<br>Plugin ‘tomasr/molokai’<br>Plugin ‘vim-scripts/phd’<br>Plugin ‘Lokaltog/vim-powerline’<br>Plugin ‘octol/vim-cpp-enhanced-highlight’<br>Plugin ‘nathanaelkane/vim-indent-guides’<br>Plugin ‘derekwyatt/vim-fswitch’<br>Plugin ‘kshenoy/vim-signature’<br>Plugin ‘vim-scripts/BOOKMARKS–Mark-and-Highlight-Full-Lines’<br>Plugin ‘majutsushi/tagbar’<br>Plugin ‘vim-scripts/indexer.tar.gz’<br>Plugin ‘vim-scripts/DfrankUtil’<br>Plugin ‘vim-scripts/vimprj’<br>Plugin ‘dyng/ctrlsf.vim’<br>Plugin ‘terryma/vim-multiple-cursors’<br>Plugin ‘scrooloose/nerdcommenter’<br>Plugin ‘vim-scripts/DrawIt’<br>Plugin ‘SirVer/ultisnips’<br>Plugin ‘Valloric/YouCompleteMe’<br>Plugin ‘derekwyatt/vim-protodef’<br>Plugin ‘scrooloose/nerdtree’<br>Plugin ‘fholgado/minibufexpl.vim’<br>Plugin ‘gcmt/wildfire.vim’<br>Plugin ‘sjl/gundo.vim’<br>Plugin ‘Lokaltog/vim-easymotion’<br>Plugin ‘suan/vim-instant-markdown’<br>Plugin ‘lilydjwg/fcitx.vim’<br>“ 插件列表结束<br>call vundle#end()<br>filetype plugin indent on<br>“ 配色方案<br>set background=dark<br>“colorscheme solarized<br>colorscheme molokai<br>“colorscheme phd<br>“ 禁止光标闪烁<br>set gcr=a:block-blinkon0<br>“ 禁止显示滚动条<br>set guioptions-=l<br>set guioptions-=L<br>set guioptions-=r<br>set guioptions-=R<br>“ 禁止显示菜单和工具条<br>set guioptions-=m<br>set guioptions-=T<br>“ 总是显示状态栏<br>set laststatus=2<br>“ 显示光标当前位置<br>set ruler<br>“ 开启行号显示<br>set number<br>“ 高亮显示当前行/列<br>set cursorline<br>set cursorcolumn<br>“ 高亮显示搜索结果<br>set hlsearch<br>“ 开启语法高亮功能<br>syntax enable<br>“ 允许用指定语法高亮配色方案替换默认方案<br>syntax on<br>“ 自适应不同语言的智能缩进<br>filetype indent on<br>“ 将制表符扩展为空格<br>set expandtab<br>“ 设置编辑时制表符占用空格数<br>set tabstop=4<br>“ 设置格式化时制表符占用空格数<br>set shiftwidth=4<br>“ 让 vim 把连续数量的空格视为一个制表符<br>set softtabstop=4<br>“ 随 vim 自启动<br>let g:indent_guides_enable_on_vim_startup=1<br>“ 从第二层开始可视化显示缩进<br>let g:indent_guides_start_level=2<br>“ 色块宽度<br>let g:indent_guides_guide_size=1<br>“字体<br>set guifont=YaHei\ Consolas\ Hybrid\ 14<br>“ 快捷键 i 开/关缩进可视化<br>:nmap <silent> <leader>i <plug>IndentGuidesToggle</plug></leader></silent></li>
</ul>
</div>
</article>
</li>
<li>
<article class='ListView'>
<header class="title">
<h1>
<a href="/2018/06/08/go函数/">函数</a>
</h1>
<div class='ListMeta'>
<time datetime="2018-06-07T16:00:00.000Z" itemprop="datePublished">
2018-06-08
</time>
|
<ul>
<li class="meta-text">
{ <a href="/tags/go语言/">go语言</a> }
</li>
</ul>
/
<ul>
<li class="meta-text">
{ <a href="/categories/study/">study</a> }
</li>
</ul>
</div>
</header>
<div>
<h3 id="函数"><a href="#函数" class="headerlink" title="函数"></a>函数</h3><ul>
<li>代码复用</li>
<li>模块化代码便于修改</li>
<li>解决代码冗余</li>
<li>基本语法:<figure class="highlight go"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="function"><span class="keyword">func</span> 函数名<span class="params">(形式参数列表)</span></span>{</span><br><span class="line"> 函数体</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
</li>
</ul>
<figure class="highlight go"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="function"><span class="keyword">func</span> <span class="title">SumAdd</span><span class="params">(a <span class="keyword">int</span>,b <span class="keyword">int</span>)</span></span>{</span><br><span class="line"> <span class="keyword">var</span> sum <span class="keyword">int</span> </span><br><span class="line"> sum=a+b</span><br><span class="line"> fmt.Println(<span class="string">"和为:"</span>,sum)</span><br><span class="line">}</span><br><span class="line"><span class="function"><span class="keyword">func</span> <span class="title">main</span><span class="params">()</span></span>{</span><br><span class="line"> <span class="keyword">var</span> num1,num2 <span class="keyword">int</span></span><br><span class="line"> fmt.Println(<span class="string">"请输入第一个数"</span>)</span><br><span class="line"> fmt.Scanf(<span class="string">"%d\n"</span>,&num1)</span><br><span class="line"> SumAdd(num1,num2)</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<div class="more-link">
<a href="/2018/06/08/go函数/#more">Read On »</a>
</div>
</div>
</article>
</li>
<li>
<article class='ListView'>
<header class="title">
<h1>
<a href="/2018/06/07/Linux/">Linux基础</a>
</h1>
<div class='ListMeta'>
<time datetime="2018-06-06T16:00:00.000Z" itemprop="datePublished">
2018-06-07
</time>
|
<ul>