重生之我在异世界学编程之C语言:深入指针篇(下)
大家好,这里是小编的博客频道
小编的博客:就爱学编程
很高兴在
CSDN
这个大家庭与大家相识,希望能在这里与大家共同进步,共同收获更好的自己!!!
目录
- 题集
- (1)指针笔试题1
- (2)指针笔试题2
- (3)指针笔试题3
- (4)指针笔试题4
- (5)指针笔试题5
- (6)指针笔试题6
- (7)指针笔试题7
- (8)指针笔试题8
- (9)指针笔试题9
- 快乐的时光总是短暂,咱们下篇博文再见啦!!!不要忘了,给小编点点赞和收藏支持一下,在此非常感谢!!!
那接下来就让我们开始遨游在知识的海洋!
题集
(1)指针笔试题1
判断代码运行结果
#include<stdio.h>
#include<string.h>
int main() {char arr[] = "abcd";//char arr[] = {'a', 'b', 'c', 'd', '\0'}printf("%d\n", sizeof(arr)); printf("%d\n", sizeof(arr + 0 )); printf("%d\n", sizeof (*arr)); printf("%d\n", sizeof(arr[1])); printf("%d\n", sizeof(&arr)); printf("%d\n", sizeof(&arr + 1)); printf("%d\n", sizeof(&arr[0] + 1)); printf("%d\n", strlen(arr)); printf("%d\n", strlen(arr + 0)); printf("%d", strlen (*arr)); printf("%d", strlen(arr[1])); printf("%d\n", strlen (&arr)); printf("%d\n", strlen (&arr + 1)); printf("%d\n", strlen (&arr[0] + 1)); return 0;
}
建议思考写下自己的答案再看后文进行核对与理解
答案 | 解析 |
---|---|
5 | sizeof() 内仅有arr (数组名), arr 代表整个数组,所以sizeof计算的是整个数组的大小——5(单位:字节) |
4/8 | 除了仅有arr或&arr 中arr 代表的是整个数组,其他arr 代表的都是数组首元素的地址,地址的大小就是4/8(至于4/8取决于32位机器或64位机器) |
1 | *arr 就是数组首元素'a' (int),大小为1 |
1 | arr[1] == *(arr + 1) ,就是数组的第二个元素,大小为1 |
4/8 | &arr 中的arr 代表的是整个数组,所以&arr 代表的是整个数组的地址,大小就是4/8 |
4/8 | &arr + 1 中的arr 代表的是整个数组,所以&arr + 1 代表的是整个数组后的和数组一样大小的连续元素的地址,大小就是4/8 |
4/8 | 第二个元素的地址 |
4 | strlen(arr) 中arr 代表的是数组首元素的地址,所以strlen() 从数组首元素开始数到至’\0’,结果就为:4 |
4 | strlen(arr+0) 中arr 代表的是数组首元素的地址,所以strlen() 从数组首元素开始数至’\0’,结果就为:4 |
非法访问 | *arr 表示数组首元素,而strlen() 要的是地址,所以非法访问 |
非法访问 | 同上 |
4 | &arr 取出了整个数组的地址,就数整个数组,结果就为:4 |
随机 | &arr + 1 就跳过了整个数组,不知道什么时候出现’\0’,也不知道任何元素的信息,所以打印的是个随机数 |
3 | &arr[0] + 1 就跳过了首元素,结果就为:3 |
考察:一维数组的数组名——特殊与一般
涉及:一维数组,strlen(),sizeof()。
(2)指针笔试题2
判断代码运行结果
#include<stdio.h>
#include<string.h>
int main() {char* p = "abcd";//这个代码的意思:把首元素的地址(a的地址)放到指针变量p中//p就相当于一般的arr(除了两种特殊情况除外)(首元素的地址)printf("%d\n", sizeof(p)); //地址的大小就是4/8(字节)(至于4/8取决于32位机器或64位机器)printf("%d\n", sizeof(p + 0 )); //同上printf("%d\n", sizeof (*p)); //*p就是数组首元素'a'(char),大小为1(字节)printf("%d\n", sizeof(p[1])); //p[1] == *(p + 1),就是数组的第二个元素,大小为1(字节)printf("%d\n", sizeof(&p)); //&p中的p代表的是数组首元素的地址,所以&p代表的是存储指针变量p的地址,大小就是4/8printf("%d\n", sizeof(&p + 1)); //&p + 1中的p代表的是数组首元素,所以&p + 1代表的是存储指针变量p的地址处后一位的地址,大小就是4/8printf("%d\n", sizeof(&p[0] + 1)); //b的地址,大小就是4/8printf("%d\n", strlen(p)); //strlen(p)中p代表的是数组首元素的地址,所以strlen函数从数组首元素开始数至'\0',结果就为:4printf("%d\n", strlen(p + 0)); //strlen(p + 0)中p代表的是数组首元素的地址,所以strlen函数从数组首元素开始数至'\0',结果就为:4//printf("%d", strlen (*p)); //*p表示数组首元素,而strlen函数要的是地址,所以非法访问//printf("%d", strlen(p[1])); //同上printf("%d\n", strlen (&p)); //&p取出了数组首元素的地址的地址,不知道什么时候出现'\0',也不知道任何元素的信息,所以打印的是个随机数printf("%d\n", strlen (&p + 1)); //&p + 1 就跳过了整个数组,不知道什么时候出现'\0',也不知道任何元素的信息,所以打印的是个随机数printf("%d\n", strlen (&p[0] + 1)); //&p[0] + 1 就跳过了首元素,结果就为:3return 0;
}
考察:字符指针——把首元素的地址(a的地址)放到指针变量p中
涉及:字符指针,strlen()。
(3)指针笔试题3
判断代码运行结果
#include<stdio.h>
struct test {int Num;char* pcname;short sDate;char cha[2];short sBa[4];
}* p;
//假设 * p = 0x00000000;
//已知结构体变量test的大小为20字节;
int main() {printf("%p\n", p + 1);//指针加1跳过整个指针权限的内容(步长)(解引用权限),所以这里跳过了整个结构体变量,也就是20个字节,结果用十六进制表示就是00000014printf("%u\n", (unsigned long)p + 1);//先把结构体指针变量p强转成无符号长整型变量,再加1就是让一个整型变量加1,结果就是加1,用十进制表示就是1printf("%p\n", (unsigned int*)p + 1);//先把结构体指针变量p强转成整型指针变量,再加1就是让一个整型指针变量加1,指针加1跳过整个权限的内容,所以这里跳过了整个整型变量,也就是4个字节,结果用十六进制表示就是00000004
}
考察:指针加1的意义,是跳过一个步长的地址
涉及:结构体指针,基本指针。
(4)指针笔试题4
判断代码运行结果
//x86,小端
#include<stdio.h>int main() {int a[4] = { 1, 2, 3, 4 };int* p = (int*)(&a + 1);int* p1 = (int*)((int)(a + 1) + 1); //如果我们定义一个:int* pa = a; 则a + 1就等价于*(pa + 1)printf("%x\n", p[-1]); //1.p[-1] == *(p - 1),因为p的类型为int*,所以p-1就是向前挪动一个整型(4个字节)的长度,指向了第4个元素的第一个字节的最左端//2.再进行解引用,根据p的访问权限可知从当前位置向后访问一个整型(4个字节),就得到了数组的第4个元素——4//3.又因为%x是用来打印十六位进制数且会去掉前面的0,所以打印就是4printf("%x\n", * p1); //1.a + 1: //低地址 高地址//低地址 高地址 //01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 //01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00//地址设为:00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f //00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f //指针位置:pa --> pa //2.(int)(a + 1): 把 地址04 强转成一个大小等于 04 的整型数据//3.(int)(a + 1) + 1:一个整型数据加1,就是数值加1,此时((int)(a + 1) + 1)就得到了一个数值大小为 05 的整型数据//4.((int*)((int)(a + 1) + 1)):把数值大小为 05 的整型数据强转为 地址05//5.int* p1 = (int*)((int)(a + 1) + 1):把上面得到的 05的地址 赋给 类型为int*的 整形指针变量p1//6.printf("%x\n", * p1):再进行解引用,根据p的访问权限可知从当前位置向后访问一个整型(4个字节),就得到了00 00 00 03(小端存储),转换为03 00 00 00(原值)(小端存储是以字节为单位的)//7.又因为%x是用来打印十六位进制数且会去掉前面的0,所以打印就是3000000return 0;
}
考察并涉及:小端存储,%x的作用,指针运算。
(5)指针笔试题5
判断代码运行结果
#include<stdio.h>
int main() {int arr[] = { 1, 2, 3, 4 };int* p = (int*)(&arr + 1);printf("%d\n", *(p - 1));//没什么好讲的printf("%d\n", *(arr + 1));//同上return 0;
}
考察并涉及:一维数组数组名。
(6)指针笔试题6
判断代码运行结果
#include<stdio.h>
int main() {int arr[2][3] = { (1, 2), (3, 4), (5, 6)};//逗号表达式的值就是','右边的表达式的结果(但要注意:','左边的表达式也会执行,且是先执行的)//所以该二维数组的元素为://2 4//6 0//0 0int* p;p = arr[0];printf("%d\n", p[1]);//两种理解p[1]的方法//1.用数组的格式理解:p = arr[0],则p[1] = arr[0][1] = 4;//2.用数组的本质理解:arr[0]作为二维数组的第一行的数组元素的数组名,代表的是数组第一行的首元素的地址,即——&arr[0][0],//p[1] == *(p + 1) == *(&arr[0][0] + 1) == 4return 0;
}
考查并涉及:指针与二维数组的关系和逗号表达式的作用。
(7)指针笔试题7
判断代码运行结果
#include<stdio.h>
int main() {int arr[5][5];//数组元素:|0 0 0 0 0 | 0 0 0 0 0 | 0 0 0 0 0 | 0 0 0 0 0 | 0 0 0 0 0 | // arr[0] arr[1] arr[2] arr[3] arr[4]//地址设为:|0 1 2 3 4 | 5 6 7 8 9 | a b c d e | f 0 1 2 3 | 4 5 6 7 8 |int(*p)[4] = (int(*)[4])arr;//arr作为二维数组的数组名,类型为:int(*)[5],与数组指针变量p(类型为:int(*)[4])类型基本一致,所以强转之后可以和数组名一样理解printf("%p,%d\n", &p[4][2] - &arr[4][2], &p[4][2] - &arr[4][2]);//以p为二维数组的数组名的二维数组:// 元素:| 0 0 0 0 | 0 0 0 0 | 0 0 0 0 | 0 0 0 0 | 0 0 0 0 | 0 0 0 0 | 0 // p[0] p[1] p[2] p[3] p[4] p[5] p[6]//地址设为:| 0 1 2 3 | 4 5 6 7 | 8 9 a b | c d e f | 0 1 2 3 | 4 5 6 7 | 8//所以 &p[4][2] - &arr[4][2] == 12 - 16 == -4,再根据占位符的功能打印的结果为:FFFFFFFC(十六进制),-4(十进制)return 0;
}
考察:%p打印的是无符号十六进制的地址值
涉及:二维数组,占位符%p,数组指针。
(8)指针笔试题8
判断代码运行结果
#include<stdio.h>
int main() {char* arr[3] = { "hello", "world", "bite" };//arr[0] == &'h' , arr[1] == &'w', arr[2] == &'b'//即数组元素:&'h'| &'w' | &'b'//元素名: arr[0]|arr[1]|arr[2]char** pa = arr;pa++;printf("%s\n", *pa);return 0;
}
考查:字符指针在接收字符串时,接受的是字符串的首元素的地址
涉及:指针数组,占位符%s。
(9)指针笔试题9
判断代码运行结果
#include<stdio.h>
int main(){char* c[4] = { "hello", "world", "bite", "pengge" };//一级字符指针数组c:// 数组元素值:| &'h'| &'w'| &'b'| &'p'|// 元素类型:|char*|char*|char*|char*|// 元素意义:|指向"hello"的指针(一开始指向'h')|指向"world"的指针(一开始指向'w')|指向"bite"的指针(一开始指向'b')|指向"pengge"的指针(一开始指向'p')// 元素名:| c[0]| c[1]| c[2]| c[3]|// 地址设为: 0 1 2 3char** cp[4] = {c + 3, c + 2, c + 1, c};//二级字符指针数组cp:// 数组元素:| 3 | 2 | 1 | 0 |// 元素名:|cp[0]|cp[1]|cp[2]|cp[3]|// 地址设为: a b c dchar*** cpp = cp;// *cpp == &cp[0] == aprintf("%s\n", **++cpp);//都只能先从cpp开始分析://1.++cpp:cpp先自增1——*cpp = a + 1 == b;//2.**(++cpp):两次解引用——(1)*(++cpp) == b --> (2)**(++cpp) == 2;//3.%s的作用:从所给地址开始,一直打印字符至'\0'处,所以打印的结果为:biteprintf("%s\n", *-- *++cpp + 3);//1.++cpp:cpp再自增1——*cpp = b + 1 == c;//2.*++cpp:解引用——*cpp == c;//3.-- *++cpp:c自减1——*c = 1 - 1 ==0;//4.*-- *++cpp:解引用——*c == 0;//5.*-- *++cpp + 3:一级字符指针 + 3——*0 = 'h' + 3 == 'l'(临时,不是真的加);//6.打印结果为:loprintf("%s\n", *cpp[-2] + 3);//1.cpp[-2]:cpp指向的值先减2再解引用——(1)cpp - 2——*cpp = c - 2 == a(临时,不是真的加);(2)*(cpp - 2)——*(cpp - 2) = a;//2.*cpp[-2]:再解引用——**(cpp - 2) == *a == 3;//3.*cpp[-2] + 3:一级字符指针 + 3——*3 = 'p' + 3 =='g'(临时,不是真的加);//4.打印结果为:ggeprintf("%s\n", cpp[-1][-1] + 1);//1.cpp[-1]:cpp指向的值先减1再解引用——(1)cpp - 1——*cpp = c - 1 == b(临时,不是真的加);(2)*(cpp - 2)——*(cpp - 2) = b;//2.cpp[-1][-1]:b指向的值先减1再解引用——(1)b - 1——*b = 2 - 1 == 1(临时,不是真的加);(2)*1——*1 = 'w';//3.cpp[-1][-1] + 1:一级字符指针 + 1——*1 = 'w' + 1 == 'o'(临时,不是真的加);//4.打印为:orldreturn 0;
}
考察:操作符的优先级只在操作数的相邻位置才考虑;++ 和-- 会真实改变变量存的数据
涉及:二级指针,操作符++和–,解引用。
快乐的时光总是短暂,咱们下篇博文再见啦!!!不要忘了,给小编点点赞和收藏支持一下,在此非常感谢!!!
相关文章:

重生之我在异世界学编程之C语言:深入指针篇(下)
大家好,这里是小编的博客频道 小编的博客:就爱学编程 很高兴在CSDN这个大家庭与大家相识,希望能在这里与大家共同进步,共同收获更好的自己!!! 目录 题集(1)指针笔试题1&a…...

理解Parquet文件和Arrow格式:从Hugging Face数据集的角度出发
parquet发音:美 [pɑrˈkeɪ] 镶木地板;拼花木地板 理解Parquet文件和Arrow格式:从Hugging Face数据集的角度出发 引言 在机器学习和大数据处理中,数据的存储和传输格式对于性能至关重要。两种广泛使用的格式是 Parquet 和 Arr…...
下载 M3U8 格式的视频
要下载 M3U8 格式的视频(通常是 HLS 视频流),可以尝试以下几种方法: 方法 1:使用下载工具(推荐) 1. IDM(Internet Download Manager): 安装 IDM 并启用浏…...

Tomcat使用教程
下载地址:https://tomcat.apache.org/ 配置环境变量 变量名: CATALINA_HOME 变量值: D:\tools\apache-tomcat-9.0.97 Path: %CATALINA_HOME%\bin 启动Tomcat(打开命令提示符) startup.bat 解决乱码问题(打开conf\logging.properties) java.util.logging.Conso…...

LabVIEW氢气纯化控制系统
基于LabVIEW的氢气纯化控制系统满足氢气纯化过程中对精确控制的需求,具备参数设置、过程监控、数据记录和报警功能,体现了LabVIEW在复杂工业控制系统中的应用效能。 项目背景 在众多行业中,尤其是石油化工和航天航空领域,氢气作为…...

现在的电商风口已经很明显了
随着电商行业的不断发展,直播带货的热潮似乎正逐渐降温,而货架电商正成为新的焦点。抖音等平台越来越重视货架电商,强调搜索功能的重要性,预示着未来的电商中心将转向货架和搜索。 在这一转型期,AI技术与电商的结合为…...
Uniapp触底刷新
在你的代码中,使用了 scroll-view 来实现一个可滚动的评论区域,并且通过监听 scrolltolower 事件来触发 handleScrollToLower 函数,以实现“触底更新”或加载更多评论的功能。 关键部分分析: scroll-view 组件: scroll-view 是一…...

开源项目 - face parsing 人脸区域分割 人像区域分割 人脸分割 人像区域分割 BiSeNet
开源项目 - face parsing 人脸区域分割 人像区域分割 人脸分割 人像区域分割 BiSeNet 项目地址:GitHub - XIAN-HHappy/face_parsing: face_parsing 脸部分割 示例: 助力快速掌握数据集的信息和使用方式。 数据可以如此美好!...

python游戏设计---飞机大战
1.前言 上次做飞机大战游戏有人这么说: 好好好!今天必须整一个,今天我们来详细讲解一下,底部找素材文件下载!!! 2.游戏制作 目录如下: 1.导入的包 import pygame import sys imp…...

13TB的StarRocks大数据库迁移过程
公司有一套StarRocks的大数据库在大股东的腾讯云环境中,通过腾讯云的对等连接打通,通过dolphinscheduler调度datax离线抽取数据和SQL计算汇总,还有在大股东的特有的Flink集群环境,该环境开发了flink开发程序包部署,实时…...

HTTP代理有那些常见的安全协议?
在数据采集领域,HTTP代理扮演着至关重要的角色,它不仅帮助我们访问互联网资源,还涉及到数据的安全传输。了解HTTP代理中常见的安全协议对于保护数据安全、提高数据采集效率至关重要。那么,有哪些安全协议是在HTTP代理中常用的呢&a…...

Kylin Server V10 下基于Kraft模式搭建Kafka集群
一、Kraft 模式与 ZooKeeper 模式简介 在Kafka 2.8 之前,Kafka 重度依赖 ZooKeeper 集群做元数据管理、Controller 的选举等(统称为共识服务);当ZooKeeper 集群性能发生抖动时,Kafka 的性能也会受到很大的影响。如下图所示: 在 Kafka 2.8 之后,引入了基于 Raft …...

tauri使用github action打包编译多个平台arm架构和inter架构包踩坑记录
这些error的坑,肯定是很多人不想看到的,我的开源软件PakePlus是使用tauri开发的,PakePlus是一个界面化将任何网站打包为轻量级跨平台软件的程序,利用Tauri轻松构建轻量级多端桌面应用和多端手机应用,为了实现发布的时候…...
Python爬虫与窗口实现翻译小工具(仅限学习交流)
Python爬虫与窗口实现翻译小工具(仅限学习交流) 在工作中,遇到一个不懂的单词时,就会去网页找对应的翻译,我们可以用Python爬虫与窗口配合,制作一个简易的翻译小工具,不需要打开网页,自动把翻译结果显示出来。 整个过程比较简单。 # This is a sample Python script. …...

紫光展锐联合上汽海外发布量产车型,赋能汽车智能化
当前,智能汽车产业迎来重大变局,随着人工智能、5G、大数据等新一代信息技术的迅猛发展,智能网联汽车正呈现强劲发展势头。 11月26日,在2024紫光展锐全球合作伙伴大会汽车电子生态论坛上,紫光展锐与上汽海外出行联合发…...

Maven 打包出现问题解决方案
我执行 mvn install 报如下错误 可是我在 web 模块中能正确引用到 common 的类,于是我把 web 引用到的 common 中的类先移动到 web 模块中,然后把 common 模块的类都删掉,然后再次执行 mvn install,结果报错如下: [ERROR] Faile…...
第四话:JS中的eval函数
theme: channing-cyan 1.不要使用eval! 如果你从来都没有用到过eval这个函数,甚至你都不知道这个函数的作用。那么我只能说:你做了一件正确的事情 o.O 虽然我这篇文章要说一下eval函数的一些能力和注意点,但是我希望࿰…...

歇一歇,写写段子
无聊的日子都在写段子1.0 中学的时候喜欢看意林之类的杂志, 里面的作者用乱七八糟的理由跑去旅游,然后说“阻碍你脚步的永远只有逃离的勇气和对生活的热爱”, 我觉得太对了,可惜 12306 付款方式里没有勇气和热爱,不…...

TypeScript (一)运行环境配置,数据类型,可选类型,联合类型,type与interface,交叉类型,断言as,字面量类型,类型缩小
文章目录 一、认识TS1.1 JS 存在的问题1.2 TS的出现1.3 TS运行环境运行ts的三种方式 1.4 变量声明1.5 类型推断 二、数据类型2.1 JS数据类型(1) 数组Array(2) 对象Object(3) 其他类型 2.2 TS特有数据类型(1) any类型(2) unknown类型(3) void类型(4) never (了解)(5) tuple类型 …...
Linux Find 命令详情解释
文件查找 普通查询find /etc -maxdepth 1 -type f -name "pa*"命令 目录... 查找深度 类型 文件名称包含 # -type文件类型:f表示文件,不指定类型的话,文件和目录都会查找# -maxdepth查找深度:目录层级的意思࿰…...

铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...

c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...
#Uniapp篇:chrome调试unapp适配
chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器:Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

【笔记】WSL 中 Rust 安装与测试完整记录
#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...