关于C语言中字符数组的那些事
1字符与字符串的存储
.
众所周知,字符并不会直接以字符的形式储存,而是以对应的ASCII码存储,而ASCII码是整数,所以就把字符包括在了整型。如果想玩花的,咱就不写字符,直接上ASCII码,用%c打印,外行看了直呼6,内行看了直呼**(手动滑稽,刀下留人)。但是字符只能一个一个存,这要是想连续存一串字符,怎么办?有没有字符串类型?没错,还真没有,不过,字符串可以用字符型数组存放。
- 定义及初始化字符数组
char arr[666];//char 表示这是一个存放字符的数组 []分配空间
char arr[]={'I','a','m','h','a','n','d','s','o','m','e'};
//初始化和int数组类似,不过字符得加上''(里面只能放一个字符哟)
//若不分配空间,系统自动匹配空间(不多不少地给,刚刚能放下初始化的字符)
啊,想自恋一下还得一个一个字符往单引号里面加,能快点吗?
char arr[]={"I am handsome!"};//注意单引号变成了双引号
这下成了,装完就跑,快速安全。
那么我想一下子装两次,行吗?
char arr[100]={"我只想说","I am the most handsome!"};
哈哈
被无情阻止了呢。为什么呢?原来一组 " " 就是一个一维的字符数组了,字符串就相当于把一个一维的字符数组集合了起来,充当一个二维数组的元素。那么将刚才的数组扩展到二维,可以成功吗?
嗯,成功啦!如果刚才的想法是对的,那是不是就可以用一个二维的字符数组装下三句甚至更多字符串呢?
看来不错哟!返回 1. 再看看“字符串可以用字符型数组储存”,我感觉我又行了!
3.有大佬解答下吗?
作为一个初学者,输入的时候忘记&应该是必经之路吧?但是有一次我在输入一个字符串的时候,却发现了一个神奇的东西。不是很懂,希望有缘看到了这段小孩子咿呀学语般的文字的大佬们可以解答一下。
char arr[100];
scanf("%s",arr);//without a &
scanf("%s",&arr);//with a &
为啥子加&和不加&都能成功输入一个字符串呢?是不是这个数组名就已经表示一个地址了呢?
4.char与int
因为字符的储存是通过ASCII码实现的,且被包括进了整型,所以是吧,听说能不用char,而去用int定义也行(浪费空间,因为char(占1)和int(一般占4)中的元素所占的字节不一样)。我比较正常所以没试过,各位有兴趣可以试试,哈哈。
5.后话:
十分感谢有人能看完一个入门小白的博文!如果我写得不好甚至哪里在瞎扯,请原谅!(能指出我的错误就更好啦)祝大家晚安!
2020.11.7 晚23:25