虎头虎脑的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]) ) ;   

🚵 结语:

如果对您有帮助的话,

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

如果对您有帮助的话,

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

如果对您有帮助的话,

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

相关文章
|
8月前
为数组arr中的每一个元素求二次方
为数组arr中的每一个元素求二次方
|
8月前
为数组 arr 中的每个元素求二次方。不要直接修改数组 arr,结果返回新的数组
为数组 arr 中的每个元素求二次方。不要直接修改数组 arr,结果返回新的数组
|
3天前
数组的长度
数组的长度不可以发生改变。 但是ArrayList集合的长度是可以随意变化的。 对于ArrayList来说,有一个尖括号代表泛型。 泛型:也就是装在集合当中的所有元素,全都是统一的什么类型。 注意:泛型只能是引用类型,不能是基本类型。 注意事项: 对于ArrayList集合来说,直接打印得到的不是地址值,而是内容。如果内 容是空,得到的是空的中括号:[]
23 3
|
3天前
数组的长度
数组的长度不可以发生改变。 但是ArrayList集合的长度是可以随意变化的。 对于ArrayList来说,有一个尖括号代表泛型。 泛型:也就是装在集合当中的所有元素,全都是统一的什么类型。 注意:泛型只能是引用类型,不能是基本类型。 注意事项: 对于ArrayList集合来说,直接打印得到的不是地址值,而是内容。如果内 容是空,得到的是空的中括号:[]
17 0
|
3天前
|
C语言 C++
C++ sizeof()运算符的参数为指针和数组的值为什么不同
C++或C语言中,都可以使用sizeof()运算符来计算数组的字节大小,除此之外,在C++和C语言中,都可以使用一个指向数组第一个元素的内存地址的指针来引用数组,因此,如果要计算数组的字节大小,或长度,传递数组本身或传递指向数组的指针给sizeof()运算符似乎都是可以的,实际上则不然,
46 5
|
3天前
|
存储 算法 Java
实现一个函数 splice(int[] a, int b[], int n, int m) 将数组 b 插入到数组 a 的第 n 个位置上去,并将其后面的元素后移 m 个位置,同时更新数组 a 的长度
实现一个函数 splice(int[] a, int b[], int n, int m) 将数组 b 插入到数组 a 的第 n 个位置上去,并将其后面的元素后移 m 个位置,同时更新数组 a 的长度
22 0
|
7月前
|
编译器 C语言
【柔性数组】0长度数组,可变数组
【柔性数组】0长度数组,可变数组
|
9月前
|
C语言
详解sizeof、strlen、指针和数组等组合题
详解sizeof、strlen、指针和数组等组合题
|
11月前
利用函数求字符串长度
利用函数求字符串长度
48 0
指针与数组在函数中输入实现逆序输出
指针与数组在函数中输入实现逆序输出
66 0
指针与数组在函数中输入实现逆序输出