8.18~9.20学习日记
待办事项:
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,也导致在缓冲区中一直存在,因而不会发生阻塞.
解决
指针数组与数组指针
指针数组和数组指针是 C 语言中的两个重要概念,它们有一些区别和不同的用途。
- 指针数组:
指针数组是一个数组,其中的每个元素都是指针。它是具有固定大小的数组,每个元素都可以指向不同的数据或对象。可以将指针数组用于存储和操作多个指针,每个指针可以指向不同的数据类型或内存位置。
下面是一个指针数组的示例,其中包含三个指向整数的指针:
1 | int a = 10, b = 20, c = 30; |
在上述示例中,ptrArray
是一个包含三个指针的数组,每个指针都指向一个整数。通过使用指针数组,可以方便地访问和操作不同的整数。
- 数组指针:
数组指针是一个指针,它指向一个数组。它是指向数组首元素的指针,并可以用于访问整个数组的元素。可以使用数组指针来遍历数组、传递数组给函数或作为函数的返回值。
下面是一个数组指针的示例,指向一个整数数组:
1 | int arr[5] = { 1, 2, 3, 4, 5 }; |
在上述示例中,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