🚵前言+目录:
对于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]) ) ;
🚵结语:
如果对您有帮助的话,
不要忘记点赞+关注哦,蟹蟹
如果对您有帮助的话,
不要忘记点赞+关注哦,蟹蟹
如果对您有帮助的话,
不要忘记点赞+关注哦,蟹蟹