#include "Arduino.h"
int V1=100;
int V2=200;
//交换完后内部值发生变化,外部没有变化
void swapValue(int a, int b){
int temp=a;
a=b;
b=temp;
Serial.print("Swap Func a: ");
Serial.println(a);
Serial.print("Swap Func b: ");
Serial.println(b);
};
// 交换完后引用对应的值发生交换
void swapRef(int &a, int &b){
int temp=a;
a=b;
b=temp;
Serial.print("Swap Func a: ");
Serial.println(a);
Serial.print("Swap Func b: ");
Serial.println(b);
};
// 交换完后指针对应的值发生交换
void swapPtrValue(int *a, int *b){
int temp=*a; // 这里的temp是值 *a也是指针对应的值
*a=*b;
*b=temp;
Serial.print("Swap Func a: ");
Serial.println(*a);
Serial.print("Swap Func b: ");
Serial.println(*b);
};
// 交换完后外部值没有变化
void swapPtr(int *a, int *b){
int *temp;
temp=a;
a=b;
b=temp;
Serial.print("Swap Func a: ");
Serial.println(*a);
Serial.print("Swap Func b: ");
Serial.println(*b);
};
void setup() {
Serial.begin(115200);
// swapValue(V1,V2);
// swapRef(V1,V2);
// swapPtrValue(&V1,&V2);
swapPtr(&V1,&V2);
// Serial.println(V1);
Serial.print("V1: ");
Serial.println(V1);
Serial.print("V2: ");
Serial.println(V2);
// 1.define
// int a = 100; //创建一个int变量a
// int *ptr; //创建一个指针
// ptr = &a; //指针进行赋值
// int &ref = V1; // 创建一个引用,创建时候必须要初始化,初始化必须要是一个对象
// int &ref = a; //将变量a取一个别名为ref(取小名) 指针都指向同一个位置
// 2.reassignment
// int *ptr1;
// int *ptr2;
// ptr1=&V1;
// ptr2=&V2;
// // $ref=V2;
// ref=V2; // ref之前是对V1的引用,这里相当于 V1=V2;
// Serial.print("*ptr");
// Serial.println(*ptr); //打印指针对应的对象
// Serial.print("ptr");
// Serial.printf(ptr); //无法打印指针
// 3.memory address
// int *ptr1;
// ptr1=&V1;
// int &ref = V1;
// Serial.println(long(&ptr1),HEX); // 打印ptr1的指针地址
// Serial.println(long(ptr1),HEX); // 打印ptr
// Serial.println(long(&V1),HEX); // 打印v1的地址
// Serial.println(long(V1),HEX); // 打印v1的值
// Serial.println(long(ref),HEX); //打印ref的值
// Serial.println(long(&ref),HEX); //打印ref的指针
// 4.null
int *ptr=nullptr;
int $ref=1000;
}
void loop() {
delay(10);
}