虎头虎脑的sizeof、strlen、数组长度、数组中元素个数和字符串长度

简介: 虎头虎脑的sizeof、strlen、数组长度、数组中元素个数和字符串长度

🚵 前言+目录:

对于C语言的初学者来说,常常被 sizeof、strlen、数组长度、数组中元素个数 和 字符串长度 这些涉及数组的概念的题弄得摸不着头脑,似懂非懂。今天我将以往所遇到的相关题目,整理了出来并向外拓展,给你全面的介绍,下次再看到不会发慌,一笑而过😀😃😎

目录

📣前言+目录:

📣保熟的总结:

   sizeof、strlen 异同:

   printf 打印:

   数组长度、数组元素个数、字符串长度:

   数组中一个特殊的知识点:

📣结语:


🏆🚴 坑点总结:

🔥 sizeof、strlen 异同:

sizeof操作符,计算变量(类型)所占内存空间的大小,单位是字节,不关注内存中存放的内容

int num = 10 ;(num的类型是int)

printf ( " %d\n " , sizeof (arr) ) ;

得 4x10=40 个字节

strlen库函数,使用时需要引头文件,专门求字符串长度,只能针对字符串,向后一直找\0,统计\0之前出现的字符个数

char ch2 [10] = " abc " ;

printf ( " %d\n " , strlen(ch2) ) ;    

得  3

printf ( " %d\n " , strlen( " abcdef \n " ) ) ;  

得  7

char str [ ] = " hello girl " ;

printf ( "%d%d \n" ,sizeof (str) ,strlen(str) ) ;

得 11  10

以上代码的片段 👇👇

int num = 10 ;
printf ( " %d\n " , sizeof (arr) ) ;     
char ch2 [10] = " abc " ;
printf ( " %d\n " , strlen(ch2) ) ;                        
printf ( " %d\n " , strlen( " abcdef \n " ) ) ;       
char str [ ] = " hello girl " ;
printf ( " %d %d \n " , sizeof (str) , strlen(str) ) ;  

🔥 printf 打印:

printf 打印时,遇到 \0 停下,不在继续打印

printf ( " abcd \0 ef " ) ;      

得abcd

char arr2 [ ] = { 'a' , 'b' , 'c' , 'd' , 'e' , 'f' } ;

(字符串长度是 随机值)

printf ( " %s\n " , arr2 ) ;        

得abcdef烫烫烫

char arr3 [ ] ={ 'a' , 'b' , 'c' , 'd' , 'e' , 'f' , ’\0‘} ;

(字符串长度是 6)

printf ( " %s\n " , arr3 ) ;        

得abcdef

以上代码的片段 👇👇

printf ( " abcd \0 ef " ) ;     
char arr2 [ ] = { 'a' , 'b' , 'c' , 'd' , 'e' , 'f' } ;
printf ( " %s\n " , arr2 ) ;       
char arr3 [ ] = { 'a' , 'b' , 'c' , 'd' , 'e' , 'f' , ’\0‘ } ;
printf ( " %s\n " , arr3 ) ;     

🔥 数组长度、数组元素个数、字符串长度:

数组长度数组元素个数大小是一样的,或者说这俩就是一个东西

字符串长度 \0 之前出现的字符个数,不加 \0

计算数组长度 时若数组中有 \0 , 需要加上 \0

char ch1[10] = { 'a' , 'b' , 'c' } ;

//   a b c 0 0 0 0 0 0 0    在内存主动放了3个元素 a b c

char ch2[10] = " abc " ;

//   a b c \0 0 0 0 0 0 0    在内存中主动放了4个元素 a b c \0

char arr1 [ ] = " abc " ;

//   a b c \0   (数组中有4个元素 ,字符串长度是3, 数组长度是4)

char arr2 [ ] = { 'a' , 'b' , 'c' } ;

//   a b c       (数组中有3个元素 ,字符串长度是随机值, 数组长度是3)

int arr1 [10] ;              数组中有 10 个元素

int arr2 [ ] = {1,2,3} ;数组中有 3 个元素

char acx [ ] = " abcdefg " ;                              

数组长度是 8

char acy [ ] ={ 'a' , 'b' , 'c' , 'd' , 'e' , 'f' , 'g'} ;    

数组长度是 7

  数组 acy 字符串长度是随机值,和数组 acx 无法比较  

char arr1 [ ] = " abcdef " ;      

字符串长度是6

printf ( " %s\n " , arr1 ) ;              

得 abcdef

char arr2 [ ] = { 'a' , 'b' , 'c' , 'd' , 'e' , 'f' } ;

字符串长度是随机值

printf ( " %s\n " , arr2 ) ;                              

得 abcdef烫烫烫

char arr3 [ ]={ 'a' , 'b' , 'c' , 'd' , 'e' , 'f' , ’\0’} ;

字符串长度是6

printf ( " %s\n " , arr3 ) ;  

得 abcdef

printf ( " %d\n " , strlen( " abcdef \n " ) ) ;

得  7

以上代码的片段 👇👇

char ch1[10] = { 'a' , 'b' , 'c' } ;
char ch2[10] = " abc " ;
char arr1 [ ] = " abc " ;
char arr2 [ ] = { 'a' , 'b' , 'c' } ;
int arr1 [10] ;                 
int arr2 [ ] = {1,2,3} ;     
char acx [ ] = " abcdefg " ;                             
char acy [ ] = { 'a' , 'b' , 'c' , 'd' , 'e' , 'f' , 'g' } ;  
char arr1 [ ] = " abcdef " ;    
printf ( " %s\n " , arr1 ) ;         
char arr2 [ ] = { 'a' , 'b' , 'c' , 'd' , 'e' , 'f' } ; 
printf ( " %s\n " , arr2 ) ;                           
char arr3 [ ] = { 'a' , 'b' , 'c' , 'd' , 'e' , 'f' , ’\0’ } ;
printf ( " %s\n " , arr3 ) ;                                  
printf ( " %d\n " , strlen( " abcdef \n " ) ) ;     

🔥 数组中一个特殊的知识点:

这俩个数组完全一样,没有区别

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

和 int arr [ ] = {1,2,3,4,5} ;

访问元素可以用变量 arr [n](创建数组时不可以使用哦)

int arr [10] = {1,2,3,4,5,6,7,8,9,10} ;

int n = 3 ;

arr [n] = 20 ;

//   将下标为 3 的元素的值改为 20      

类型

int num = 10 ;       ( num的类型是int )

int arr [10] = {0} ;

(arr数组的类型是:int [10] )

printf ( " %d\n " , sizeof (arr) ) ;         得  40

printf ( " %d\n " , sizeof (int[10]) ) ;   得  40

printf ( " %d\n " , sizeof (int [5]) ) ;    得  20

以上代码的片段 👇👇

int arr [5] = {1,2,3,4,5} ;
int arr [ ] = {1,2,3,4,5} ;
int arr [10] = {1,2,3,4,5,6,7,8,9,10} ;
int n = 3 ;
arr [n] = 20 ;  
int num = 10 ;    
int arr [10] = {0} ;    
printf ( " %d\n " , sizeof (arr) ) ;       
printf ( " %d\n " , sizeof (int[10]) ) ;  
printf ( " %d\n " , sizeof (int [5]) ) ;   

🚵 结语:

如果对您有帮助的话,

不要忘记点赞+关注哦,蟹蟹

如果对您有帮助的话,

不要忘记点赞+关注哦,蟹蟹

如果对您有帮助的话,

不要忘记点赞+关注哦,蟹蟹

相关文章
|
3月前
|
安全 网络协议 算法
Nmap网络扫描工具详细使用教程
Nmap 是一款强大的网络发现与安全审计工具,具备主机发现、端口扫描、服务识别、操作系统检测及脚本扩展等功能。它支持多种扫描技术,如 SYN 扫描、ARP 扫描和全端口扫描,并可通过内置脚本(NSE)进行漏洞检测与服务深度枚举。Nmap 还提供防火墙规避与流量伪装能力,适用于网络管理、渗透测试和安全研究。
532 1
|
4月前
|
Ubuntu Linux
计算机基础知识:linux系统怎么安装?
在虚拟机软件中创建一个新的虚拟机,并选择相应操作系统类型和硬盘空间大小等参数。将下载的 ISO 镜像文件加载到虚拟机中。启动虚拟机,进入安装界面,并按照步骤进行安装。安装完成后,可以在虚拟机中使用 Linux 系统。
|
2月前
|
人工智能 自然语言处理 数据中心
65_GPU选择:A100 vs RTX系列
在2025年的今天,大语言模型(LLM)已经成为人工智能领域的核心技术之一。从GPT-4到Llama 3.1,从专业领域应用到消费级产品,LLM正在以前所未有的速度改变着我们的工作和生活方式。然而,这些强大模型的训练和部署背后,都离不开高性能计算硬件的支持,尤其是GPU(图形处理单元)的选择,往往直接决定了项目的可行性、效率和成本。
|
人工智能 JSON Rust
用 Rust 实现敏感信息拦截插件,提升 AI 网关安全防护能力
本⽂对敏感信息拦截插件的使用方式和实现原理进行了简单介绍,它能够自动检测并处理请求和响应中的敏感词,有效防止敏感信息泄露。通过对不同数据范围的支持和灵活的配置选项,该插件能够适应各种应用场景,确保数据的安全性和合规性。
566 103
|
9月前
|
云安全 存储 安全
阿里云安全体检功能深度评测报告
本次体检通过深度扫描发现了4类安全隐患:高危端口暴露、未修复的Log4j2漏洞、OSS存储桶权限错误。针对这些问题,我们采取了具体修复措施,如限制源IP、热更新参数等。体检项目在安全组可视化、漏洞修复指引等方面表现出色,但也存在容器安全检测不足等问题。建议增加一键阻断功能和OpenAPI接口,优化误报反馈机制,并添加合规检测模块。总体而言,阿里云安全体检在风险发现效率上表现优异,建议与云防火墙等产品联动,形成动态防御体系。
|
机器学习/深度学习 存储 人工智能
梯度累积的隐藏陷阱:Transformer库中梯度累积机制的缺陷与修正
在本地微调大规模语言模型时,由于GPU显存限制,通常采用梯度累积技术来模拟大批次训练。然而,实际研究表明,梯度累积方法在主流深度学习框架中会导致模型性能显著下降,尤其是在多GPU环境中。本文详细探讨了梯度累积的基本原理、应用场景及存在的问题,并通过实验验证了修正方案的有效性。研究指出,该问题可能在过去多年中一直存在且未被发现,影响了模型的训练效果。
1040 4
梯度累积的隐藏陷阱:Transformer库中梯度累积机制的缺陷与修正
|
Shell Android开发
安卓scheme_url调端:在AndroidManifest.xml 中如何配置 Intent-filter?
为了使Android应用响应vivo和oppo浏览器的Deep Link或自定义scheme调用,需在`AndroidManifest.xml`中配置`intent-filter`。定义启动的Activity及其支持的scheme和host,并确保Activity可由外部应用启动。示例展示了如何配置HTTP/HTTPS及自定义scheme,以及如何通过浏览器和adb命令进行测试,确保配置正确无误。
|
存储 Kubernetes 调度
Flink 批作业如何在 Master 节点出错重启后恢复执行进度?
本文由阿里云研发工程师李俊睿撰写,介绍了Flink 1.20版中新引入的批作业进度恢复功能。文章涵盖背景、解决思路、使用效果及启用方法。此前,若JobMaster故障,批作业需重头开始,造成进度丢失。新功能通过将JM状态持久化至外部存储并在故障后利用这些状态恢复作业进度,避免了这一问题。使用该功能需启用集群高可用并配置相关参数。
502 7
Flink 批作业如何在 Master 节点出错重启后恢复执行进度?
|
Kubernetes Cloud Native API
深入理解Kubernetes——容器编排的王者之道
深入理解Kubernetes——容器编排的王者之道
279 1
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现深度学习模型:智能文化遗产数字化保护
使用Python实现深度学习模型:智能文化遗产数字化保护
408 1

热门文章

最新文章