void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32-S3!");
uint16_t a = 10; // 定义一个变量
uint16_t b = 20; // 定义第二个变量
printf("-> 交换前A和B的地址分别是:%X , %X\n",&a, &b);
printf("-> 交换前A和B的值分别是:%d , %d\n", a, b);
swap_1(a, b);
// swap_2(&a, &b);
// swap_3(a, b);
printf("-> 交换后A和B的地址分别是:%X , %X\n",&a, &b);
printf("-> 交换后A和B的值分别是:%d , %d\n", a, b);
}
void loop() {
// put your main code here, to run repeatedly:
delay(10); // this speeds up the simulation
}
// 第一个交换函数,按值传递
void swap_1(uint16_t a, uint16_t b){
printf("交换前A和B的地址分别是:%X , %X\n",&a, &b);
printf("交换前A和B的值分别是:%d , %d\n", a, b);
uint16_t t=a;
a=b;
b=t;
printf("交换后A和B的地址分别是:%X , %X\n",&a, &b);
printf("交换后A和B的值分别是:%d , %d\n", a, b);
}
// 第二个交换函数,按地址传递
void swap_2(uint16_t *a, uint16_t *b){
printf("交换前A和B的地址分别是:%X , %X\n",a, b);
printf("交换前A和B的值分别是:%d , %d\n", *a, *b);
uint16_t t=*a;
*a=*b;
*b=t;
printf("交换后A和B的地址分别是:%X , %X\n",a, b);
printf("交换后A和B的值分别是:%d , %d\n", *a, *b);
}
// 第三个交换函数,按引用传递
void swap_3(uint16_t &a, uint16_t &b){
printf("交换前A和B的地址分别是:%X , %X\n",&a, &b);
printf("交换前A和B的值分别是:%d , %d\n", a, b);
uint16_t t=a;
a=b;
b=t;
printf("交换后A和B的地址分别是:%X , %X\n",&a, &b);
printf("交换后A和B的值分别是:%d , %d\n", a, b);
}
void printf(String format, ...) {
char buffer[128]; // 创建缓冲区
va_list args; // 定义可变参数列表
va_start(args, format); // 初始化可变参数列表
vsnprintf(buffer, sizeof(buffer), format.c_str(), args); // 格式化输出到缓冲区
va_end(args); // 结束可变参数列表
Serial.print(buffer); // 输出到串口
}
Loading
esp32-s3-devkitc-1
esp32-s3-devkitc-1