这是本文档旧的修订版!
极度简化的C/C++教程
1. 变量与变量类型
变量定义的方式: <类型> <变量名称>; <类型> <变量名称> = <数值>; eg. int a = 1; 变量类型: 整型: int 2 字节 0 - 65535 长整形: long 字符型: char 1 字节 0 - 255 浮点型: float
sizeof(long);
变量修饰:
无符号: unsigned
unsigned int a = 0;
静态: static
———————————————————–
常量定义方式: const <类型> <常量名称> = <数值>;
宏定义: #define <宏名称> <宏值>
pinMode(3, OUTPUT);
#define PO(x) pinMode(x, OUTPUT) #define PI(x) pinMode(x, INPUT)
#include <stdio.h>
头文件 #ifndef MAIN_H #define MAIN_H 声明各种 #endif
a.c int aaa = 1;
b.c extern int aaa; printf(aaa);
———————————————————–
数组: <类型> <变量名称>[n]; <类型> <变量名称>[n] = {v1,v2,...v_n}; int array[10] = {0}; a = array[10]; X
———————————————————–
字符串: C本身并没有字符串这个类型 字符数组来表示字符串
char str[] = "Your String";
str = "adlhasdfhkl";X //特别注意: 只有在初始化的时候可以用=赋值字符串 //其他的时候,需要用strcpy函数来复制字符串
———————————————————–
变量的赋值: =
运算:+ — * / % 取模
逻辑运算:|| && ! 或 与 非
unsigned char == != > < >= <=
位运算: | & ^ ~ >> << 或 与 异或 非 右移 左移
char 8 bit 7 6 5 4 3 2 1 0 1 0 1 0 1 1 1 0
| 0 0 0 1 0 0 0 0
1 1 0 1 1 1 1 1
& 1 0 0 0 1 1 1 0 ~ 0 1 0 1 0 0 0 1
1 0 1 0 1 0 1 1 1
改变优先级:()
———————————————————– 2. 面向过程的程序的三种结构
顺序执行
———————————————————–
语句1; 语句2; 语句3; ...
———————————————————–
选择执行
———————————————————–
if 语句系列
if (条件) { 语句块1; } else { 语句块2; }
if (条件) { 语句块1; }
if (条件1) { 语句块1; } else if (条件2) { 语句块2; } else { 语句块3; }
switch语句:
switch (n) { case 1: 语句块1; //break; case 2: 语句快2; break; ... default: break; }
———————————————————–
循环执行
———————————————————–
for 循环
for (循环变量初始化; 循环条件; 循环变量操作) { 语句块; }
eg.
for (i = 0; i < 10; i++) {
}
while循环系列
while (条件) //条件满足继续循环 { 语句块; }
for(;;) {
}
while(1) {
}
a = 3; do { 语句1; 语句2; a--; }while(a > 1); //条件满足继续循环
3. 函数的概念
意义: 和数学上的函数非常相似 y = f(x1, x2, ... xn)
定义: <返回值类型> <函数名称> (<参数类型1> <参数1>...)
//这里的参数都是形参,传递的只是数值,不是变量本身 //想修改变量本身?目前先考虑全局变量 //更好的办法以后再讲 void eg. int function_not(int x) { if (x == 0) { x = 1; return 1; } else { return 0; } }
作用域:
一层{}就是一个作用域
函数之外的层是全局层
内层可以操作外层,反之不可以
外层也有的情况下,内层依然可以在定义一次, 定以后就不再影响外层
再谈静态变量
int call_num() { static int count_num = 0; return ++count_num; }
———————————————————– 4. 关于C++
只说一点:
. : 点运算,调用对象的属(bian)性(liang)或者方(han)法(shu)
Serial.begin(9600);
Serial.print("Good");