C语言基础复习

1、三码

正数:

3码合1  ,正数的反码/补码就是其本身

负数:

  • 原码就是符号位加上真值的绝对值,即用第一位表示符号,其余位表示值

原码:11010101

  • 负数的反码是在其原码的基础上, 符号位不变,其余各个位取反

反码:10101010

  • 负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)

补码:10101011

2、 运算符优先级和结合性

C语言运算符优先级等级口诀

  • [圆方括号、箭头一句号]

  • [自增自减非反负、针强地址长度]

      

  • [乘除,加减,再移位]

      

  • [小等大等、等等不等]

      

  • [八位与],[七位异],[六位或],[五与],[四或],[三疑],[二赋],[一真逗]

n++ : 先使用n,然后将它的值增加

++n : 先将n值增加,然后再使用它

3、函数

变量作用域:局部、全局、静态

局部变量:函数内部,生存周期随函数

静态变量在函数内的:作用域也是函数内的,但是生存周期的程序运行时一直存在

静态变量在函数外:作用域局限于当前源文件内,生存周期的程序运行时一直存在

全局变量:整个程序,声明了就能用

参数传递方式:

  • 值传递
  • 指针传递
  • 引用传递

4、宏

无参宏定义方式:#define PI 3.14

带参宏定义方式:

#define Fun_1(x)  x+10
#define Fun_2(x) (x+10)

这是审题时最容易错误的地方

Fun_1(5)*10  Fun_1结果为:->5+10*10 = 105
Fun_2(5)*10 Fun_2结果为:->(5+10)*10 = 150

5、结构体(struct)、联合体(union)、枚举(enum)

  • 结构体(struct)

前面的 char + short不够4字节,要按照4字节对齐。int后面的char不够4字节也需要按4节对齐

 typedef struct node
{
char a; 1
short b; 2
int c; 4
char d; 2 //这两个合并成4字节
char e; 2
}NODE;

最后2个char合成一个4字节,(1+2)+4+4 = 12

  • 联合体(union)

union中变量共用内存,应以最长的为准,

	typedef union node
{
int a;
char b;
int c[10];
char d[20];
}NODE; int a = sizeof(NODE); a的值等于多少?
答案:40
  • 枚举(enum)

enum初值为0

enum {
FLOWA,
FLOWB = 10,
FLOWC,
}; int main()
{
printf("%d %d %d", FLOWA, FLOWB, FLOWC); return 0; 请问FLOWA, FLOWB, FLOWC 分别为多少?
答案: 0 ,10,11; }
  • 成员访问

访问结构体成员的运算符有两种,一种是“.”即结构运算符,另一种是“->”即结构指针运算符。

#include <stdio.h>

   typedef struct {
int int_field;
char char_field; } my_struct; void main(){ my_struct my_s; // 声明结构体变量 my_s.int_field=3; //结构运算符访问结构成员 my_struct *s; // 声明结构体指针 s=(my_struct *)malloc(sizeof(my_struct)); s->int_field=4; s->char_field='a'; (*s).int_field=6;
  • 类型定义
typdef struct _A{}A,*PA

Visual Studio快捷键

VS真是最好的编辑器没有之一,有很多的快捷键可以使用。

1.注释代码:

1)Ctrl-K + Ctrl-C: 注释一段选择代码

2)Ctrl-K + Ctrl-U: 取消一段选择代码的注释

2.大小写转换

1)转小写:使用组合键“Ctrl+ U”;

2)转大写:使用组合键“CTRL + SHIFT + U”。

3.代码排版

shift + { : 选中内容增加{号

CTRL + W :选择当前单词

Ctrl + M + M - 折叠代码

Ctrl + A 全选后

Ctrl + K+D 格式化代码

使用#region方法头的位置,将代码折叠起来

//语法描述
#pragma region name
#pragma endregion comment
//END //实例代码
#pragma region Region_1
void Test() {}
void Test2() {}
void Test3() {}
#pragma endregion Region_1 int main() {}

4.定义与引用

转跳到定义:F12;

查找所有引用:使用组合键“Shift+F12”

跳转文件 :“ALT+O”

5.断点调试

Ctrl+Shift+F9:删除所有断点;

Ctrl+F9:禁用断点

F10:单步执行,跳过所执行的函数体部分;

Ctrl+F10:运行到光标所在行,反复触发

F11:单步执行,会单步到所执行的函数体里面去;

Shift+F11:跳出当前执行的函数体部分;

F5:设定断点后,使用F5启动VS调试可以直接启动进入循环;

调试技巧

记录初始值,如X,Y坐标,坦克类型

6.条件编译调试技巧

#ifdef _DEBUG
printf("%d",__LiNE__);
#else #endif
__FILE__

C++学习1-(C语言基础、VS快捷键)的更多相关文章

  1. Java学习笔记:语言基础

    Java学习笔记:语言基础 2014-1-31   最近开始学习Java,目的倒不在于想深入的掌握Java开发,而是想了解Java的基本语法,可以阅读Java源代码,从而拓展一些知识面.同时为学习An ...

  2. ios开发学习笔记001-C语言基础知识

    先来学习一下C语言基础知识,总结如下: 在xcode下编写代码. 1.编写代码 2.编译:cc –c 文件名.c 编译成功会生成一个 .o的目标文件 3.链接:把目标文件.o和系统自带的库合并在一起, ...

  3. Arduino学习笔记② Arduino语言基础

    授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...

  4. ndk学习之C语言基础复习----虚拟内存布局与malloc申请

    在这一次中来学习一下C语言的内存布局,了解它之后就可以解释为啥在用malloc()申请的内存之后需要用memset()来对内存进行一下初始化了,首先来了解一下物理内存与虚拟内存: 物理内存:通过物理内 ...

  5. GO学习-(20) Go语言基础之单元测试

    Go语言基础之单元测试 不写测试的开发不是好程序员.我个人非常崇尚TDD(Test Driven Development)的,然而可惜的是国内的程序员都不太关注测试这一部分. 这篇文章主要介绍下在Go ...

  6. GO学习-(19) Go语言基础之网络编程

    Go语言基础之网络编程 现在我们几乎每天都在使用互联网,我们前面已经学习了如何编写Go语言程序,但是如何才能让我们的程序通过网络互相通信呢?本章我们就一起来学习下Go语言中的网络编程. 关于网络编程其 ...

  7. GO学习-(17) Go语言基础之反射

    Go语言基础之反射 本文介绍了Go语言反射的意义和基本使用. 变量的内在机制 Go语言中的变量是分为两部分的: 类型信息:预先定义好的元信息. 值信息:程序运行过程中可动态变化的. 反射介绍 反射是指 ...

  8. MySQL学习笔记_8_SQL语言基础复习

    SQL语言基础复习 一.概述 SQL语句注释方式 1)以"#"开头直到行尾的所有内容都是注释 2)以"--"(--后还有一个空格)开头直到行尾的所有内容都是注释 ...

  9. 我的学习目标(目前已初步学习完Java语言基础)

    操作系统.尤其是内存/线程/进程方面 计算机网络协议,重点关注 TCP/UDP/HTTP. 数据结构与算法. 数据库 设计模式,熟练掌握常用的几种设计模式. Java语言基础.熟悉java语言基础,了 ...

  10. GO学习-(18) Go语言基础之并发

    Go语言基础之并发 并发是编程里面一个非常重要的概念,Go语言在语言层面天生支持并发,这也是Go语言流行的一个很重要的原因. Go语言中的并发编程 并发与并行 并发:同一时间段内执行多个任务(你在用微 ...

随机推荐

  1. MT【40】一道联赛二试题

    让我通过这道题来演示如何利用切比雪夫多项式的内功心法: 评:如此大道至简,当年为之叫绝的精彩的做法

  2. SharePoint 2013 Central Admin 不能打开

    当我准备打开CA时发现下面的错误: This operation can be performed only on a computer that is joined to a server farm ...

  3. 【转】 cJSON 源码解析

    关于cjson的介绍和使用方法就不在这里介绍了,详情请查看上一篇博客cjson使用方法. JSON的内存结构像广义表,可以认为是有层次的双向链表. cJSON程序中的细节点如下: 大量宏替换 大量静态 ...

  4. 洛谷 P3258 [JLOI2014]松鼠的新家 解题报告

    P3258 [JLOI2014]松鼠的新家 题目描述 松鼠的新家是一棵树,前几天刚刚装修了新家,新家有n个房间,并且有n-1根树枝连接,每个房间都可以相互到达,且俩个房间之间的路线都是唯一的.天哪,他 ...

  5. matplotlib 刻度,坐标轴不可见

    plt.gray():只有黑白两色,没有中间的渐进色 1. 关闭坐标刻度 plt.xticks([]) plt.yticks([]) 关闭坐标轴: plt.axis('off') 注意,类似的这些操作 ...

  6. 洛谷P1600 天天爱跑步

    天天放毒... 首先介绍一个树上差分. 每次进入的时候记录贡献,跟出来的时候的差值就是子树贡献. 然后就可以做了. 发现考虑每个人的贡献有困难. 于是考虑每个观察员的答案. 把路径拆成两条,以lca分 ...

  7. 在exe运行界面按右键(不用按鼠标右键)

    单击该键 用于夜晚在exe运行界面粘贴数据.(正常来说直接按右键即可) 从此粘贴数据不会影响睡觉的人……etc.在宿舍……

  8. 预测氨基酸替换的致病性及分子机制:MutPred工具的使用

    MutPred的功能是预测氨基酸替换后的致病性及其分子机制,旧版本见链接:http://mutpred1.mutdb.org/ 新版本更新为MutPred2,见网站链接:http://mutpred2 ...

  9. 一张图看懂JavaScript中数组的迭代方法:forEach、map、filter、reduce、every、some

    好吧,竟然不能单发一张图,不够200字啊不够200字! 在<JavaScript高级程序设计>中,分门别类介绍了非常多数组方法,其中迭代方法里面有6种,这6种方法在实际项目有着非常广泛的作 ...

  10. Hbase记录-Hbase Web管理工具

    1.Hmaster的Web接口-端口参数:hbase.master.info.port  默认为16010 http://hbase_master_server:16010 可查看hbase的版本信息 ...