当前位置: 首页 > news >正文

指针结构体题

目录

初阶指针_指针的概念

1.使用指针打印数组内容

2.字符串逆序

3.整形数组和字符串数组 

4.打印菱形

5.打印水仙花数

6.计算求和

结构体

7.喝汽水问题

8.程序死循环解释

9.选择题总结tips 


今天是重点是指针&结构体题题目。🆗🆗🆗

初阶指针_指针的概念

1.使用指针打印数组内容

题目1
使用指针打印数组内容
写一个函数打印arr数组的内容,不使用数组下标,使用指针。
arr是一个整形一维数组。
//方法1
#include<stdio.h>
void print(int arr[],int sz)
{int* p = arr;int i = 0;for (i = 0; i < sz; i++){//❌printf("%d ", *p + i);万一数组不是+1增长printf("%d ", *(p + i));//数组在内存中连续存放,所以产生连续的地址}}
int main()
{int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };int sz = sizeof(arr) / sizeof(arr[0]);print(arr,sz);return 0;
}
//方法2
#include<stdio.h>
void print(int arr[], int sz)
{int* p = arr;int i = 0;for (i = 0; i < sz; i++){printf("%d ", *p);p++;}}
int main()
{int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };int sz = sizeof(arr) / sizeof(arr[0]);print(arr, sz);return 0;
}
//或者
#include <stdio.h>
int main()
{int arr[] = {1,2,3,4,5,6,7,8,9,10};//在这里完成代码// 分析:因为数组中存储的元素类型是int类型的,因此只要给一个int的指针,// 依次取索引数组中的每个元素即可int* p = arr;  // 数组名代表数组首元素的地址for(int i = 0; i < sizeof(arr)/sizeof(arr[0]); ++i){printf("%d ", *p);   // *p: 取到p所指向位置的元素++p;                 // 获取p的下一个位置}return 0;
}

2.字符串逆序

题目2
字符串逆序
写一个函数,可以逆序一个字符串的内容
//前面博文我们讲解过思想,这里我们回顾一下以及其他方法
//方法1_指针
#include<stdio.h>
#include<string.h>
void Reverse(char arr[],int sz)
{char* left = arr;char* right = arr+(sz-1);//sz-2(sizeof)while(left<right){int tmp = 0;tmp = *left;*left =*right;//交换元素//left=right交换地址是❌不可以*right = tmp;left++;right--;//地址++}
}
int main()
{char arr[] = "abcdef";int sz = strlen(arr);//int sz=sizeof(arr)/sizeof(arr[0]);Reverse(arr,sz);//逆置函数//打印逆置数组printf("%s", arr);return 0;
}
//方法2_数组下标
#include<stdio.h>
#include<string.h>
void Reverse(char arr[], int sz)
{int left = 0;int right = sz - 1;//sz-2(sizeof)while (left < right){int tmp = 0;tmp = arr[left];//元素——指针arr[left]= arr[right];arr[right] = tmp;left++;right--;//元素下标++}
}
int main()
{char arr[] = "abcdef";int sz = strlen(arr);//int sz=sizeof(arr)/sizeof(arr[0]);Reverse(arr, sz);//逆置函数//打印逆置数组int i = 0;for (i = 0; i <= sz; i++){printf("%c", arr[i]);}//printf("%s", arr);return 0;
}
why???????????????????????????????????????
///_数组下标_无论在不在函数都不能产生逆置的效果
//#include<stdio.h>
//#include<string.h>
//int main()
//{
//	char arr[] = "abcdef";
//	int sz = strlen(arr);
//	//int sz=sizeof(arr)/sizeof(arr[0]);
//	char left = arr[0];
//	char right =arr[sz - 1];//sz-2(sizeof)
//	while (left < right)
//	{
//		int tmp = 0;
//		tmp = left;//元素——指针
//		left = right;
//		right = tmp;
//		left++;
//		right--;//元素下标++
//	}
//	printf("%s", arr);
//	return 0;
//}//void reverse(int arr[], int sz)
//{
//	int left =arr[0];//1
//	int right = arr[sz - 1];//5
//	while (left < right)
//	{
//		int tmp = 0;
//		tmp = left;
//		left = right;
//		right= tmp;
//		left++;
//		right--;
//	}
//}
//因为一艘进行逆置的时数组里面的元素,两两进行交换实现逆置
//这里的right和left是新的变量,新在栈区创建的空间,交换的是这两个变量。(或许试试指针)
//并不会对数组元素产生什么影响

 

3.整形数组和字符串数组 

分别写出
整形数组和字符串数组的输入和逆置和打印

整形 数组

//整形输入
#include<stdio.h>
int main()
{int m = 0;scanf("%d", &m);//输入整形数组的个数int arr[1000];int i = 0;for (i = 0; i < m; i++){scanf("%d", &arr[i]);}return 0;
}
//或者
#include<stdio.h>
int main()
{int m = 0;scanf("%d", &m);//输入整形数组的个数int arr[1000];int i = 0;for (i = 0; i < m; i++){scanf("%d", arr+i);}return 0;
}
//逆置_数组
#include<stdio.h>
int main()
{int arr[5] = { 1,2,3,4,5 };//逆置int sz = sizeof(arr)/sizeof(arr[0]);//strlen不能计算整形int left = 0;int right = sz - 1;while (left < right){int tmp = 0;tmp = arr[left];arr[left] = arr[right];arr[right] = tmp;left++;right--;}//打印int i=0;for (i = 0; i < sz; i++){printf("%d ", arr[i]);}return 0;
}//逆置_指针
#include<stdio.h>
void reverse(int arr[],int sz)
{int* left = arr;int* right = arr+(sz - 1);while (left < right){int tmp = 0;tmp = *left;*left=*right;*right= tmp;left++;right--;}
}
int main()
{int arr[5] = { 1,2,3,4,5 };//逆置int sz = sizeof(arr) / sizeof(arr[0]);//strlen不能计算整形reverse(arr, sz);//打印int i = 0;for (i = 0; i < sz; i++){printf("%d ", arr[i]);}return 0;
}
//打印
#include<stdio.h>
int main()
{int arr[] = { 1,2,3,4,5 };int i = 0;int* p = arr;for (i = 0; i < 5; i++){printf("%d ", arr[i]);}printf("\n");int j = 0;for (j = 0; j < 5; j++){printf("%d ", *(arr + j));//printf("%d ", *(p + j));}
}

 字符串数组

//输入
#include<stdio.h>
int main()
{char arr[1000] = { 0 };gets(arr);printf("%s", arr);
}
关于字符串数组逆置上文有也是下标和指针同时可用。
注意一定是char 
//打印
#include<stdio.h>
int main()
{char arr[] = "tsqxgd";printf("%s ", arr);printf("\n");int i = 0;for (i = 0; i < (sizeof(arr) / sizeof(arr[0]) - 1); i++){printf("%c", arr[i]);}return 0;
}

4.打印菱形

题目3
用C语言在屏幕上输出以下图案
//找规律" "和'*"
/*
思路:
仔细观察图形,可以发现,此图形中是由空格和*按照不同个数的输出组成的。
上三角:先输出空格,后输出*,每行中空格:从上往下,一行减少一个*:2*i+1的方式递增下三角:先输出空格,后输出*,每行中空格:从上往下,每行多一个空格*: 从上往下,按照2*(line-1-i)-1的方式减少,其中:line表示总共有多少行
按照上述方式,将上三角和下三角中的空格和*分别输出即可。 
*/

#include<stdio.h>
int main()
{int line = 0;scanf("%d", &line);//输入想要的行数int i = 0;//注意从0开始到line-1行//上半行for (i = 0; i < line; i++)//上半行数循环{//每一行的打印int j = 0;//line-1是第一行-i循环第二三等行for (j = 0; j < line - 1 - i; j++){printf(" ");}for (j = 0; j < 2 * i + 1; j++){printf("*");}printf("\n");}//下半行for (i = 0; i < line-1; i++){int j = 0;for (j = 0; j <= i; j++){printf(" ");}for (j = 0; j < 2 * (line - 1 - i) - 1; j++){printf("*");}printf("\n");}return 0;
}

5.打印水仙花数

题目4
打印水仙花数
求出0~100000之间的所有“水仙花数”并输出。
“水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,
如:153=1^3+5^3+3^3,则153是一个“水仙花数”。/*
思路:
此题的关键在于只要知道判断一个数据是否为水仙花数的方式,
问题就迎刃而解。假定给定一个数据data,具体检测方式如下:
1. 求取data是几位数
2. 获取data中每个位置上的数据,并对其进行立方求和
3. 对data中每个位上的数据立方求和完成后,在检测其结果是否与data相等即可,
相等:则为水仙花数
否则:不是
具体实现参考以下代码。
*/易错:
特别注意循环进入是否要/10
必须有tmp把i的值存起来防止发生变化

字幂数:如果在一个固定的进制中,一个n位自然数等于自身各个数位上数字的n次幂之和,则称此数为自幂数。

自幂数_百度百科 (baidu.com) 

#include<stdio.h>
#include<math.h>
int main()
{int i = 0;for (i = 0; i <= 999999; i++){//判断几位数_字幂数int count = 1;int tmp = i;int sum = 0;while (tmp/=10)//易错//进入就要判断/10{count++;}//求字幂数的和//易错计算和一定要初始化为原来i进入的数字tmp = i;while(tmp)//循环条件易错{sum += pow(tmp% 10, count);tmp /= 10;}if (sum == i){printf("%d ", i);}}return 0;
}

 

6.计算求和

题目5
计算求和
求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,
例如:2+22+222+2222+22222/*
思路:
通过观察可以发现,该表达式的第i项中有i个a数字,因此:
假设第i项为temp,则第i+1项为temp*10+a
具体参考以下代码
*/
//数字a的前n项之和
#include<stdio.h>
#include<math.h>
int main()
{int n = 0;int a = 0;scanf("%d %d",&a,&n);int count = 0;int i = 0;int k = 0;for (i = 0; i < n; i++){k = k * 10 + a;count += k;}printf("%d", count);return 0;
}

结构体

7.喝汽水问题

题目6
喝汽水问题
喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少汽水(编程实现)。
/*
方法1:
1. 20元首先可以喝20瓶,此时手中有20个空瓶子
2. 两个空瓶子可以喝一瓶,喝完之后,空瓶子剩余:empty/2(两个空瓶子换的喝完后产生的瓶子) + empty%2(不够换的瓶子)
3. 如果瓶子个数超过1个,可以继续换,即重复2
*/// 方法2:
//按照上述喝水和用瓶子换的规则的话,
//可以发现,其实就是个等差数列:money*2-1
//方法1
#include<stdio.h>
int main()
{int money = 0;scanf("%d", &money);//喝的汽水的总个数int total = money;//空瓶int empty = money;while (empty > 1){total = total + empty / 2;//总的=起始+空瓶个数empty = empty / 2+empty%2;//空瓶=起始/2+空瓶余数(易错)}printf("%d", total);return 0;
}
//方法2
#include<stdio.h>
int main()
{int money = 0;scanf("%d", &money);if(money>0)printf("%d", 2 * money - 1);//找规律return 0;
}

 

8.程序死循环解释

题目7
程序死循环解释
VS开发环境调试下面的代码,画图解释下面代码的问题#include <stdio.h>
int main()
{int i = 0;int arr[] = {1,2,3,4,5,6,7,8,9,10};for(i=0; i<=12; i++){arr[i] = 0;printf("hello bit\n");}return 0;
}

9.选择题总结tips 

指针

  • 在32位系统: int类型占4个字节,指针占4个字节,操作系统可以使用的最大内存空间是2^32
  • 在64位系统: int类型占4个字节,指针占8个字节,操作系统可以使用的最大内存空间是2^64
  • 32位系统下:int占4个字节,指针表示地址空间个数,总共有2^32个,故占4个字节

  • 64位系统下:int占4个字节,指针表示地址空间个数,总共有2^64个,故占8个字节

  • 指针+1等的计算,和指针类型有关。(arr+1/&arr[i])
  • 整型在内存存储,指针+1是以字节为单位,还需看大小端
  • (int a=0x11223344 \ int arr[]={1,2,3,4,5}指的是数组中每个整型元素,数组的存放仍是连续)
  • 一定要特别注意循环条件数组下标从0开始循环变量之间临界条件

下面代码的结果:

#include <stdio.h>
int main()
{int arr[] = {1,2,3,4,5};short *p = (short*)arr;int i = 0;for(i=0; i<4; i++){*(p+i) = 0;}for(i=0; i<5; i++){printf("%d ", arr[i]);}return 0;
}
//arr数组在内存中的存储格式为:
0x00ECFBF4:  01 00 00 00
0x00ECFBF8:  02 00 00 00
0x00ECFBFC:  03 00 00 00
0x00ECFC00:  04 00 00 00
0x00ECFC04:  05 00 00 00
指针p的类型为short*类型的,因此p每次只能所有两个字节,for循环对数组中内容进行修改时,一次访问的是:
arr[0]的低两个字节,arr[0]的高两个字节,arr[1]的低两个字节,arr[1]的高两个字节,故改变之后,数组中内容如下:
0x00ECFBF4:  00 00 00 00
0x00ECFBF8:  00 00 00 00
0x00ECFBFC:  03 00 00 00
0x00ECFC00:  04 00 00 00
0x00ECFC04:  05 00 00 00
故最后打印:0   0   3   4   5

下面程序段的输出结果为:

unsigned long pulArray[] = {6,7,8,9,10};
unsigned long *pulPtr;
pulPtr = pulArray;
*(pulPtr + 3) += 3;
printf("%d,%d\n",*pulPtr, *(pulPtr + 3));
unsigned long pulArray[] = {6,7,8,9,10};
unsigned long *pulPtr;
pulPtr = pulArray;// 数组名代表数组首元素地址,因此pulptr指向的是数组中第一个元素的位置
*(pulPtr + 3) += 3;// pulptr+3访问的是数组中第三个元素(数组下标从0开始),故将9改为9+3=12
printf("%d,%d\n",*pulPtr, *(pulPtr + 3));// 打印第一个和第三个元素,因此:打印6和12

 

 在小端机器中,下面代码输出的结果是:

#include <stdio.h>
int main()
{int a = 0x11223344;char *pc = (char*)&a;*pc = 0;printf("%x\n", a);return 0;
}
//假设,a变量的地址为0x64,则a变量在内存中的模型为:
0x64| 44 |
0x65| 33 |
0x66| 22 |
0x67| 11 |char*类型的指针变量pc指向只能指向字符类型的空间,
如果是非char类型的空间,必须要将该空间的地址强转为char*类型。
char *pc = (char*)&a; pc实际指向的是整形变量a的空间,
即pc的内容为0x64,即44,*pc=0,即将44位置中内容改为0,
修改完成之后,a中内容为:0x11223300

上面三道题的不同处就是:指针类型+1/+3等,根据指针类型来决定的。 

 数组中的元素是整形,一个整形元素的存放是由大小端存放 

 数组中的元素存放是连续。(见上图)

  • 二级指针指向的空间中存储的也是一个地址
  • 二级指针也是指针变量,是用来保存一级指针的地址
  • 数组的地址一般用一级指针存储,或者用数组指针接收
  •  二级指针是指针,二级指针的大小看系统32/64(4/8)
  • 整型指针+1,向后偏移一个整形类型的大小,即4个字节(指针+1看指针类型再决定偏移量)
  • 两个指针相减,指针必须指向一段连续空间,减完之后结构代表两个指针之间相差元素的个数
  • 整形指针指向一个整形空间,解引用操作访问4个字节
  • 指针中存储的是地址,地址可以看成一个数据,可以比较大小
  • 指针数组是一个数组,是存放指针的数组,该数组的每个元素是一个指针
  • 数组[ ]不写两种情况:数组必须初始化(根据初始化说明数组大小),函数传参(本质是指针)
  • 指针变量是用来存放地址的变量,存储一个地址,指向同类型的一块内存空间
  • 指针变量中存的有效地址可以唯一指向内存中的一块区域,一个指针变量中只能储存一个地址
  • 局部指针变量不初始化就是野指针,野指针不可以正常使用
  • 局部变量没有初始化里面就是随机值
  • 全局变量没有初始化里面就是0
  • 关于编程题_找规律
  • 注意临界条件
  • 注意不要是循环变量在循环体中发生变化
  • 进入while循环的条件

结构体

struct student
{int num;char name[32];float score;
}stu;
  • 在C语言中需要自定义类型时,要用到struct关键字(struct是结构体类型的关键字)
  • 在C语言中,用struct定义的结构体,定义结构体类型变量时,需要用struct student(是用户定义的结构体类型)
  •  结构体中变量的名称,称之为结构体的成员(num,score)
  • stu是定义的结构体类型变量,不是名称,如果想要让stu为结构体类型名称时,必须在结构体定义时添加   typedef 关键字(见结构体篇)

C语言之结构体篇_唐棣棣的博客-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/m0_74841364/article/details/132133064?spm=1001.2014.3001.5502

  • 结构体访问成员的操作符有: . 操作符 ->操作符 * 操作符
  • 结构体类型变量访问结构体中成员时,使用 . 操作符

  • 指向结构体类型变量的指针访问结构体中成员时,使用->操作符

  • 指向结构体类型变量的指针也可以通过 . 方式访问成员,只不过要先通过 * 对该指针解引用

  • 结构体指针

  • 结构体数组

 下面程序横线处填入:

#include < stdio.h >
struct S
{ int a;int b; 
};
int main( )
{ struct S a, *p=&a;
//struct S a;
//struct S*p=&a;结构体指针a.a = 99;printf( "%d\n", __________);return 0;
}
结构体类型变量需要访问其成员时,用.运算符,
如果是指向结构体变量的指针访问时,需要用->,
或者先对指针解引用,取到指向的结构体类型的变量,再通过.访问,
特别提醒:要注意优先级
//. 的优先级高于 *
  printf( "%d\n", a.a);printf( "%d\n", p->a);printf( "%d\n", (*p).a);

 下面程序的输出结果是:

struct stu
{int num;char name[10];int age;
};void fun(struct stu *p)
{printf("%s\n",(*p).name);return;
}int main()
{struct stu students[3] = 
{{9801,"zhang",20}, {9802,"wang",19},{9803,"zhao",18} };fun(students + 1);return 0;
}
在main函数中先定义了一个stu结构体类型的数组students,
students指向结构体的起始位置,
students+1 表示该数组中下标为 1 的元素,
因此fun的形参实际指向的是students数组中的第二个元素,
故打印的是wang

 

关于以上练习题,大家可以动手写一写。

新学期,少说话多做事。🙂🙂🙂不要忘记敲代码哦。

✔✔✔✔最后,感谢大家的阅读,若有错误和不足,欢迎指正!!

代码----------→【gitee:https://gitee.com/TSQXG】

联系----------→【邮箱:2784139418@qq.com】

相关文章:

指针结构体题

目录 初阶指针_指针的概念 1.使用指针打印数组内容 2.字符串逆序 3.整形数组和字符串数组 4.打印菱形 5.打印水仙花数 6.计算求和 结构体 7.喝汽水问题 8.程序死循环解释 9.选择题总结tips 今天是重点是指针&结构体题题目。&#x1f197;&#x1f197;&#x…...

【力扣每日一题02】数组篇--删除有序数组中的重复项

一、题目 给你一个 升序排列 的数组 nums &#xff0c; 请你原地删除重复出现的元素&#xff0c;使每个元素 只出现一次 返回删除后数组的新长度。 元素的 相对顺序 应该保持 一致 。 然后返回 nums 中唯一元素的个数。 二、思路解析 这道题要用到 “双指针” 的概念&…...

Vue在表格中拿到该行信息的方式(作用域插槽-#default-scope-解决按钮与行点击的顺序问题)

遇到的问题 在做表格的时候&#xff0c;表格是封装好了的&#xff0c;用于展示数据。如果想给单行增加按钮&#xff0c;可以单独写一列存放按钮&#xff0c;最基本的需求是&#xff0c;点击按钮后要拿到数据然后发起请求。 且Vue的element-plus&#xff0c;当我们点击按钮之后…...

OJ练习第158题——单词拆分 II

单词拆分 II 力扣链接&#xff1a;140. 单词拆分 II 题目描述 给定一个字符串 s 和一个字符串字典 wordDict &#xff0c;在字符串 s 中增加空格来构建一个句子&#xff0c;使得句子中所有的单词都在词典中。以任意顺序 返回所有这些可能的句子。 注意&#xff1a;词典中的…...

ArcGIS地块面积分割调整工具插件

地块分割调整工具可以实现将选定的图斑按照面积比例或者指定的面积&#xff0c;分割成多个图斑。 各个图斑的面积用逗号分隔&#xff0c;比例分割设置时&#xff0c;用整数表示。 面积分割时&#xff0c;最后一个图斑的面积可以不写&#xff0c;插件可以自动计算图斑的面积&a…...

基于Matlab实现多个图像增强案例(附上源码+数据集)

图像增强是数字图像处理中的一个重要步骤&#xff0c;它通过一系列的算法和技术&#xff0c;使图像在视觉上更加清晰、明亮、对比度更强等&#xff0c;以便更好地满足人们的需求。在本文中&#xff0c;我们将介绍如何使用Matlab实现图像增强。 文章目录 部分源码源码数据集下载…...

计算机网络 概述部分

目录 计算机网络在信息时代的作用 计算机网络的重要特征 网络&#xff0c;internet,Internet的区别 局域网 广域网的区别 网络协议的分层 计算机网络在信息时代的作用 计算机网络的重要特征 连通性&#xff1a;彼此联通&#xff0c;交换信息 共享性&#xff1a;信息共享…...

使用DOSBOX运行TurboC2,TC2使用graphics库绘图

Turbo C是由美国Borland公司开发的一套C语言程序开发工具&#xff0c;Borland公司是一家专门从事软件开发、研制的大公司。该公司相继推出了一套Turbo系列软件&#xff0c;如Turbo BASIC、Turbo Pascal、Turbo Prolog&#xff0c;这些软件很受用户欢迎 [1] 。 Turbo C集成了程序…...

OpenCV(二):认识Mat容器

目录 1.什么是Mat类 2.Mat类能存储的数据 整数类型&#xff08;有符号和无符号&#xff09;&#xff1a; 浮点数类型&#xff1a; 布尔类型&#xff1a; 3.Mat类的创建 1.利用矩阵宽、高和类型参数创建Mat类 2.利用矩陈Size(结构和数据类型参数创建Mat类 3.利用已有Mat…...

springboot整合Excel填充数据

填充一组数据 准备模板 封装数据 import java.util.ArrayList; import java.util.List;/*** 使用实体类封装填充数据** 实体中成员变量名称需要和Excel表各种{}包裹的变量名匹配*/ Data public class FillData {private String name;private int age;// 生成多组数据代码pub…...

c语言技术面试记录 ---- 纲要、题目、分析及给分标准

纲要 作为一个面试官&#xff0c;除了编程类的问题&#xff0c;你还可以考虑问一些关于技术知识、项目经验、解决问题能力和团队合作等方面的问题&#xff0c;以全面评估应聘者的能力和适应性。以下是一个可能的提问逻辑和大纲&#xff0c;供你参考&#xff1a; 技术知识和基…...

前端进阶之——模块化

在做项目的时候越来越发现模块化的重要性&#xff0c;做好模块化开发不仅给后期的维护带来不少好处而且大大提升项目开发效率&#xff0c;接下来整理一下模块化相关知识吧。 模块化开发的优点 封装方法、提高代码的复用性、可维护性和可读性隔离作用域&#xff0c;避免污染全…...

Python爬虫抓取表情包制作个性化聊天机器人

在现代社交媒体和即时通讯应用中&#xff0c;使用表情包已经成为一种流行的沟通方。本文将介绍如何利用Python编写一个简单而有趣的聊天机器人&#xff0c;并通过爬虫技术来抓取各类表情包&#xff0c;使其具备个性化特点。   1.确定需求与功能   -定义聊天机器人需要实现哪…...

使用pip命令安装库,装到其他环境中的问题。

问题描述&#xff1a;我们在pycharm中创建了新的虚拟环境&#xff0c;但是在其终端使用Pip命令安装库时&#xff0c;发现库却安装到了其他conda创建的环境中。图示安装gym库&#xff0c;刚开始安装到了其他地方&#xff0c;第二次正确安装。 原因分析&#xff1a;安装库时&…...

如何使用CSS实现一个带有动画效果的进度条?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ HTML 结构&#xff1a;⭐ CSS 样式&#xff1a;⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为那…...

uni-app 报错 navigateTo:fail page “/pages/.../...“ is not found

这个错误的意思是&#xff1a;识别不到该页面 错误可能一&#xff1a;没有在 pages.json【微信小程序是 app.json】中定义该页面的路径 如&#xff1a; pages.json "pages": [{"path": "pages/index/index" }, {"path": "pag…...

【unity插件】使用BehaviorDesigner插件制作BOSS的AI行为树

文章目录 前言素材插件一、基础使用二、敌人物理攻击三、敌人面向玩家四、敌人法术攻击五、随机进行攻击六、敌人不同的阶段推荐学习视频源码完结 前言 Behavior Designer是一个行为树插件&#xff0c;是一款为了让策划&#xff0c;程序员&#xff0c;美术人员方便使用的可视化…...

概念解析 | 量子机器学习:将量子力学与人工智能的奇妙融合

注1:本文系“概念解析”系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是:量子机器学习。 量子机器学习:将量子力学与人工智能的奇妙融合 量子增强机器学习:量子经典混合卷积神经网络 量子机器学习是量子计算和机器学习的结合,它利用量子力学的特…...

【Cortex-M3权威指南】学习笔记4 - 异常

目录 实现 CM3流水线CM3 详细框图CM3 总线接口总线连接模板 异常异常类型优先级定义优先级组 向量表中断输入于挂起NMI中断挂起 Fault 类异常总线 faults存储器管理 faults用法 faults SVC 与 PendSV 实现 CM3 流水线 CM3 处理器使用 3 级流水线&#xff0c;分别是&#xff1a;…...

RISC-V(2)——特权级及特权指令集

目录 1. 特权级 2. 控制和状态寄存器&#xff08;CSR&#xff09; 2.1 分类 2.2 分析 1. 特权级 一个 RISC-V 硬件线程&#xff08;hart&#xff09;是运行在某个特权级上的&#xff0c;这个特权级被编码到一个或者多个 CSR&#xff08;control and status register&a…...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天&#xff0c;再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至&#xff0c;这不仅是开发者的盛宴&#xff0c;更是全球数亿苹果用户翘首以盼的科技春晚。今年&#xff0c;苹果依旧为我们带来了全家桶式的系统更新&#xff0c;包括 iOS 26、iPadOS 26…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止

<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

条件运算符

C中的三目运算符&#xff08;也称条件运算符&#xff0c;英文&#xff1a;ternary operator&#xff09;是一种简洁的条件选择语句&#xff0c;语法如下&#xff1a; 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true&#xff0c;则整个表达式的结果为“表达式1”…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...