待办事项:

1.博客访问速度极慢 原因启用cloudflare减速cdn、主页草率

2.SPI总线学习

scanf()函数——引入缓冲区概念

张阿姨的烦恼

问题描述:张阿姨开了一个炸鸡店,想写个程序来计算客人应付的金额,偶然发现输入“ · ” 时,会停不下来。背后到底发生了什么呢?又怎样解决呢?

请你给出对应的问题分析报告,并给出你的解决方案。

鸡腿应用的源码如下:

#include <stdio.h>

void main()
{
int JITUI_num = 0;
int price_of_JITUI = 998;
double discount = 0.6;
double total = 0;
for(;;)
{
/* input */ printf("鸡腿数量:"); scanf_s("%d", &JITUI_num); /* processing */
total = price_of_JITUI * JITUI_num * discount;
/* output */
printf("Total: %lf\n", total);
}

}

2.原因分析:

该程序中scanf要求读取到十进制整形,而字符类型的并不匹配,因此scanf在缓冲区中读取为0,也导致在缓冲区中一直存在,因而不会发生阻塞.

解决

91efb8fdf41c40a193c9af39fa77b6d3

56deaf342d2b4d57904487020ab10bf3

指针数组与数组指针

指针数组和数组指针是 C 语言中的两个重要概念,它们有一些区别和不同的用途。

  1. 指针数组:
    指针数组是一个数组,其中的每个元素都是指针。它是具有固定大小的数组,每个元素都可以指向不同的数据或对象。可以将指针数组用于存储和操作多个指针,每个指针可以指向不同的数据类型或内存位置。

下面是一个指针数组的示例,其中包含三个指向整数的指针:

1
2
int a = 10, b = 20, c = 30;
int* ptrArray[3] = { &a, &b, &c };

在上述示例中,ptrArray 是一个包含三个指针的数组,每个指针都指向一个整数。通过使用指针数组,可以方便地访问和操作不同的整数。

  1. 数组指针:
    数组指针是一个指针,它指向一个数组。它是指向数组首元素的指针,并可以用于访问整个数组的元素。可以使用数组指针来遍历数组、传递数组给函数或作为函数的返回值。

下面是一个数组指针的示例,指向一个整数数组:

1
2
int arr[5] = { 1, 2, 3, 4, 5 };
int (*ptr)[5] = &arr;

在上述示例中,ptr 是一个指向包含 5 个整数的数组的指针。通过使用数组指针,可以通过指针算术或解引用操作来访问数组中的元素。

需要注意的是,指针数组和数组指针的声明和使用方式略有不同。指针数组是一个数组,每个元素都是指针;而数组指针是一个指针,指向一个数组。

总结:

  • 指针数组是一个数组,每个元素都是指针。

  • 数组指针是一个指针,指向一个数组。

  • 指针数组用于存储和操作多个指针。

  • 数组指针用于访问整个数组,可以进行指针算术操作。

  • 声明和使用方式不同,需要根据具体的需求选择合适的类型。

数组

数组定义

int a[6] = {0,1,2,3,4,5};

int b[][3]={0,1,2,3,4,5};

int *pa =a;

int **pa=b;

printf("a的1号元素:%d",*pa);

printf("b的第一号元素:%d",**pb);

输出为00

一维数组 数组名指针指向第一号元素

二维数组 数组名指针指向指向第一号元素的指针

取值时进行一/二层解引用

51进度截止到I2C

i2c_example

spi_example