test_sizeof
test_sizeof
//结论:
//
sizeof(arrU8)得到的大小是u8类型数组的 **定义大小**,在 初始化的时候用 //
strlen(arrU8)得到的大小是u8类型数组的 **实际大小**,在 复制的时候用 //sizeof((char*)arrU8),把一个u8 * 转成 char *,在32位机器上结果是4,64位机器上是8
//sizeof((char*)arrU8)是输出一个指针的大小
//要打印u8类型的数组,直接arrU8就可以了,不用加(char*);
#include <stdio.h>
#include <stdlib.h>
#include <string.h>typedef unsigned char u8;int main(void)
{u8 arrU8[12] = {0};printf("printf arrU8[12] by arrU8 = %s\n", arrU8);//printf arrU8[12] by arrU8 = printf("printf arrU8[12] by (char*)arrU8=%s\n", (char*)arrU8);//printf arrU8[12] by (char*)arrU8=printf("sizeof(arrU8)=%d\n", sizeof(arrU8));//sizeof(arrU8)=12printf("sizeof((char*)arrU8)=%d\n", sizeof((char*)arrU8));//sizeof((char*)arrU8)=8printf("strlen(arrU8)=%d\n", strlen(arrU8));//strlen(arrU8)=0printf("strlen((char*)arrU8)=%d\n", strlen((char*)arrU8));//strlen((char*)arrU8)=0memcpy(arrU8, "123456789", 9);printf("---------------------------------------------\n");printf("printf arrU8[12] by arrU8 = %s\n", arrU8);//printf arrU8[12] by arrU8 = 123456789printf("printf arrU8[12] by (char*)arrU8=%s\n", (char*)arrU8);//printf arrU8[12] by (char*)arrU8=123456789printf("sizeof(arrU8)=%d\n", sizeof(arrU8));//sizeof(arrU8)=12printf("sizeof((char*)arrU8)=%d\n", sizeof((char*)arrU8));//sizeof((char*)arrU8)=8printf("strlen(arrU8)=%d\n", strlen(arrU8));//strlen(arrU8)=9printf("strlen((char*)arrU8)=%d\n", strlen((char*)arrU8));//strlen((char*)arrU8)=9//结论://sizeof(arrU8)得到的大小是u8类型数组的定义大小//strlen(arrU8)得到的大小是u8类型数组的实际大小//sizeof((char*)arrU8),把一个u8 * 转成 char *,在32位机器上结果是4,64位机器上是8//sizeof((char*)arrU8)是输出一个指针的大小//要打印u8类型的数组,直接arrU8就可以了,不用加(char*);printf("---------------------------------------------\n");char arrCh[12] = {0};printf("printf arrCh[12] by arrCh = %s\n", arrCh);//printf arrCh[12] by arrCh = printf("printf arrCh[12] by (char*)arrCh=%s\n", (char*)arrCh);//printf arrCh[12] by (char*)arrCh=printf("sizeof(arrCh)=%d\n", sizeof(arrCh));//sizeof(arrCh)=12printf("sizeof((char*)arrCh)=%d\n", sizeof((char*)arrCh));//sizeof((char*)arrCh)=8printf("strlen(arrCh)=%d\n", strlen(arrCh));//strlen(arrCh)=0printf("strlen((char*)arrCh)=%d\n", strlen((char*)arrCh));//strlen((char*)arrCh)=0memcpy(arrCh, "987", 3);printf("---------------------------------------------\n");printf("printf arrCh[12] by arrCh = %s\n", arrCh);//printf arrCh[12] by arrCh = 123456789printf("printf arrCh[12] by (char*)arrCh=%s\n", (char*)arrCh);//printf arrCh[12] by (char*)arrCh=123456789printf("sizeof(arrCh)=%d\n", sizeof(arrCh));//sizeof(arrCh)=12printf("sizeof((char*)arrCh)=%d\n", sizeof((char*)arrCh));//sizeof((char*)arrCh)=8printf("strlen(arrCh)=%d\n", strlen(arrCh));//strlen(arrCh)=9printf("strlen((char*)arrCh)=%d\n", strlen((char*)arrCh));//strlen((char*)arrCh)=9printf("---------------------------------------------\n");printf("arrU8=%s strlen(arrU8)=%d\n", arrU8, strlen(arrU8));memset(arrU8, 0, sizeof(arrU8));//初始化的时候用sizeofmemcpy(arrU8, arrCh, strlen(arrCh));//复制的时候strlenprintf("arrU8=%s strlen(arrU8)=%d\n", arrU8, strlen(arrU8));printf("---------------------------------------------\n");printf("arrU8=%s strlen(arrU8)=%d\n", arrU8, strlen(arrU8));memset(arrU8, 0, sizeof(arrU8));memcpy(arrU8, "54321", 5);printf("arrU8=%s strlen(arrU8)=%d\n", arrU8, strlen(arrU8));printf("---------------------------------------------\n");printf("arrCh=%s strlen(arrCh)=%d\n", arrCh, strlen(arrCh));memset(arrCh, 0, sizeof(arrCh));memcpy(arrCh, arrU8, strlen(arrU8));printf("arrCh=%s strlen(arrCh)=%d\n", arrCh, strlen(arrCh));exit(0);
}
printf arrU8[12] by arrU8 =
printf arrU8[12] by (char*)arrU8=
sizeof(arrU8)=12
sizeof((char*)arrU8)=8
strlen(arrU8)=0
strlen((char*)arrU8)=0
---------------------------------------------
printf arrU8[12] by arrU8 = 123456789
printf arrU8[12] by (char*)arrU8=123456789
sizeof(arrU8)=12
sizeof((char*)arrU8)=8
strlen(arrU8)=9
strlen((char*)arrU8)=9
---------------------------------------------
printf arrCh[12] by arrCh =
printf arrCh[12] by (char*)arrCh=
sizeof(arrCh)=12
sizeof((char*)arrCh)=8
strlen(arrCh)=0
strlen((char*)arrCh)=0
---------------------------------------------
printf arrCh[12] by arrCh = 987
printf arrCh[12] by (char*)arrCh=987
sizeof(arrCh)=12
sizeof((char*)arrCh)=8
strlen(arrCh)=3
strlen((char*)arrCh)=3
---------------------------------------------
arrU8=123456789 strlen(arrU8)=9
arrU8=987 strlen(arrU8)=3
---------------------------------------------
arrU8=987 strlen(arrU8)=3
arrU8=54321 strlen(arrU8)=5
---------------------------------------------
arrCh=987 strlen(arrCh)=3
arrCh=54321 strlen(arrCh)=5相关文章:
test_sizeof
test_sizeof //结论: // sizeof(arrU8)得到的大小是u8类型数组的 **定义大小**,在 初始化的时候用 // strlen(arrU8)得到的大小是u8类型数组的 **实际大小**,在 复制的时候用 //sizeof((char*)arrU8),把一个u8 * 转成 char *&…...
100+ Windows运行命令大全,装B高手必备
操作电脑关闭、重启、注销、休眠的命令细则: 用法: shutdown [/i | /l | /s | /sg | /r | /g | /a | /p | /h | /e | /o] [/hybrid] [/soft] [/fw] [/f] [/m \\computer][/t xxx][/d [p|u:]xx:yy [/c "comment"]] 没有参数 显示帮助。这与键入 /? 是一样的。…...
iOS 设置图标和upload包时显示错误
右键-show in finder-AppIcon.appiconset-然后替换图片 然后遇到个问题 就是图片不能有alpha [Xcode]应用图标:ERROR ITMS-90717: “Invalid App Store Icon. The App Store Icon in the asset catalog in x… 具体操作:只需确保【AppIcon】图片集中不…...
软件工程的舞台上,《人月神话》的美学纷飞
前言: Hello大家好,我是Dream。 今天给大家分享一本书:《人月神话》——软件工程的经典之作。 《人月神话》是一本具有深远影响力的软件工程著作,无论是软件开发者、管理者还是学习软件工程的人士,都能从中获得宝贵的启…...
C现代方法(第19章)笔记——程序设计
文章目录 第19章 程序设计19.1 模块19.1.1 内聚性与耦合性19.1.2 模块的类型 19.2 信息隐藏19.2.1 栈模块 19.3 抽象数据类型19.3.1 封装19.3.2 不完整类型 19.4 栈抽象数据类型19.4.1 为栈抽象数据类型定义接口19.4.2 用定长数组实现栈抽象数据类型19.4.3 改变栈抽象数据类型中…...
Elasticsearch 作为 GenAI 缓存层
作者:JEFF VESTAL,BAHA AZARMI 探索如何将 Elasticsearch 集成为缓存层,通过降低 token 成本和响应时间来优化生成式 AI 性能,这已通过实际测试和实际实施进行了证明。 随着生成式人工智能 (GenAI) 不断革新从客户服务到数据分析…...
FPGA与STM32_FSMC总线通信实验
FPGA与STM32_FSMC总线通信实验 内部存储器IP核的参数设置创建IP核FPGA代码STM32标准库的程序 STM32F407 上自带 FSMC 控制器,通过 FSMC 总线的地址复用模式实现STM32 与 FPGA 之间的通信,FPGA 内部建立 RAM 块,FPGA 桥接 STM32 和 RAM 块&…...
maven配置自定义下载路径,以及阿里云下载镜像
1.配置文件 <?xml version"1.0" encoding"UTF-8"?> <settings xmlns"http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation"http://maven.apache.org…...
01.单一职责原则
单一职责原则 概述 简单来说就是一个类只描述一件事, 比如我们熟知的 userDao.java 只负责 用户域功能。如果userDao既操作user表又操作order表,这显然不合理。正确的做法是让orderDao.java去操作order表。 对类来说的,一个类应该只负责一项…...
RT-Thread上部署TinyMaix推理框架,使MCU赋予AI能力
概要 当谈到微控制器(MCU)和人工智能(AI)的结合,我们进入了一个激动人心的领域。传统上,AI应用程序需要大型计算机或云服务器的处理能力,但随着技术的发展,现在可以将AI嵌入到微控制器中。这为嵌入式系统、物联网设备、机器人和各种其他应用开启了新的可能性。 MCU A…...
设计模式 -- 策略模式(Strategy Pattern)
策略模式:一种行为型模式,这些设计模式特别关注对象之间的通信。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。 介绍 意图:定义一系列的算…...
Spring Boot 集成 ElasticSearch
1 加入依赖 首先创建一个项目,在项目中加入 ES 相关依赖,具体依赖如下所示: <dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>7.1.0</version&g…...
百度智能云正式上线Python SDK版本并全面开源!
文章目录 1. SDK的优势2. 千帆SDK:快速落地LLM应用3. 如何快速上手千帆SDK3.1 SDK快速启动3.2 SDK进阶指引3.3 通过Langchain接入千帆SDK 4. 开源社区 百度智能云千帆大模型平台再次升级!在原有API基础上,百度智能云正式上线Python SDK&#…...
LeetCode(3)删除有序数组中的重复项【数组/字符串】【简单】
目录 1.题目2.答案3.提交结果截图 链接: 26. 删除有序数组中的重复项 1.题目 给你一个 非严格递增排列 的数组 nums ,请你** 原地** 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保…...
前端视角中的微信登录
目录 引入 流程介绍 具体实现 引入 本文主要讲解网站应用中微信登录的具体流程是怎么样的,以及作为前端开发人员在这整个流程中的主要任务是什么。 如果想要实现微信登录的功能,需要开发人员到微信开放平台注册相应的账号,进行注册应用&am…...
Python 中使用 Selenium 隐式等待
selenium 包用于使用 Python 脚本进行自动化和测试。 我们可以使用它来访问网页中的各个元素并使用它们。 该包中有许多方法可用于根据不同属性检索元素。 加载页面时,会动态检索一些元素。 与其他元素相比,这些元素的加载速度可能不同。 Python 中使用…...
GEE:基于 Landsat 计算的 kNDVI 应用 APP
作者:CSDN @ _养乐多_ 本文记录了在Google Earth Engine(GEE)平台中,使用 Landsat 遥感数据计算 kNDVI 的应用 APP 链接,并介绍该 APP 的使用方法和步骤。该APP可以为用户展示 NDVI 和 kNDVI 的遥感影像,进行对比分析。该 APP 在 Google Earth Engine(GEE)平台中实现。…...
Spring 缓存注解
Spring Cache 框架给我们提供了 Cacheable 注解用于缓存方法返回内容。但是 Cacheable 注解不能定义缓存有效期。这样的话在一些需要自定义缓存有效期的场景就不太实用。 按照 Spring Cache 框架给我们提供的 RedisCacheManager 实现,只能在全局设置缓存有效期。这…...
微信小程序前端开发
目录 前言: 1. 框架选择和项目搭建 2. 小程序页面开发 3. 数据通信和接口调用 4. 性能优化和调试技巧 5. 小程序发布和上线 前言: 当谈到微信小程序前端开发时,我们指的是使用微信小程序框架进行开发的一种方式。在本文中,我…...
C# OpenCvSharp DNN HybridNets 同时处理车辆检测、可驾驶区域分割、车道线分割
效果 项目 代码 using OpenCvSharp; using OpenCvSharp.Dnn; using System; using System.Collections.Generic; using System.Drawing; using System.IO; using System.Linq; using System.Numerics; using System.Text; using System.Windows.Forms;namespace OpenCvSharp_D…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...
LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...
spring Security对RBAC及其ABAC的支持使用
RBAC (基于角色的访问控制) RBAC (Role-Based Access Control) 是 Spring Security 中最常用的权限模型,它将权限分配给角色,再将角色分配给用户。 RBAC 核心实现 1. 数据库设计 users roles permissions ------- ------…...
