数组 - 字符数组
发布日期:2021-05-07 10:11:48 浏览次数:15 分类:精选文章

本文共 1280 字,大约阅读时间需要 4 分钟。

一、数组:数组是一组相同类型的元素

int main0501(){   	//数据类型 + 数组名[元素个数] = { 值 } - 如果数组初始化可以不指定数组元素个数	int arr1[10] = {    0 };	int arr2[] = {    1,3,5,7,9 };	//不完全初始化 - 剩下的两个空间会被默认初始化为0	int arr3[5] = {    1,3,5 };		//c99标准中引用一个概念:变长数组	//支持数组创建的时候,用变量指定大小,但是这个数组不能被初始化	int n = 10;	//int arr[n] = { 0 };//err - 由此可见VS2017是不支持c99变长数组的		return 0;}

二、字符串就是一串字符 - 用双引号括起来的一串字符 “hello bit”

int main0502(){   	//注:字符串的结束标志是一个\0的转义字符。在计算字符串长度的时候\0是结束标志,不算作字符串内容	//三、字符数组 - 字符串使用字符数组存储	char arr[] = "hello";//字符串在结尾的位置隐藏了一个\0的字符		return 0;}

三、易混点

int main0503(){   	char arr1[] = "abc";	char arr2[] = {    'a','b','c' };	char arr3[] = {    'a','b','c','\0' };//这样就等同于arr1	//arr1、arr2、arr3的输出结果是什么?	printf("%s\n", arr1);	printf("%s\n", arr2);	printf("%s\n", arr3);	//结果 arr1 - abc	//     arr2 - abc烫烫烫烫蘟bc	//     arr3 - abc	//事实上在内存中arr1 - a b c \0    //             arr2 - a b c    //			   arr3 - a b c	//之前有提到\0是字符串的结束标志:在打印arr1时遇到\0时停止打印;而arr2没有\0,则会继续往下找\0,所以输出了一些乱码		//arr1/arr2两种类型字符串的大小及长度	//sizeof - 1个字符=1个字节	printf("%d\n", sizeof(arr1));//4 	printf("%d\n", sizeof(arr2));//3	//sizeof在计算字符串元素所占内存大小时是包括\0的,且不是以\0为结束标志的,而是以元素个数为标志	//strlen - 计算字符串长度 - 头文件string.h	printf("%d\n", strlen(arr1));//3	printf("%d\n", strlen(arr2));//15	//strlen在计算字符串长度时是以\0为结束标志的,且不包括\0;而arr2没有\0,所以它的结果是一个随机数 	return 0;}
上一篇:转义字符
下一篇:作用域和生命周期

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2025年03月30日 08时38分09秒