目录
一、字符型数组的初始化与赋值方法
1.用到这种一般是题目直接输入一串字符,不知道长度
但是如果识别到空格就会自动结束
2.一般是知道长度的情况下
3.
4.
ps:从输出结果看出,空格也是占一个空间的
5.利用了函数,记得添加头文件 #include<cstring>
6.gets()函数
#include <stdio.h>
可以容纳字符数组中有空格
gets从标准输入设备读字符串函数,其可以无限读取,不会判断上限,以回车结束读取,所以程序员应该确保buffer的空间足够大,以便在执行读操作时不发生溢出。
Attention!!!
只有在初始化时才能够直接赋值,之后是不允许直接整体赋值的
(以下为错误示范,请勿模仿)
二、字符型数组的长度
利用strlen函数
头文件#include<cstring>
相关代码:
#include<iostream>
#include<cstring>
using namespace std;
int main()
{ //第一种赋值方法 (不知道长度)
/* char a[10];
cin>>a;
cout<<a[5];
return 0;*/
//第二种赋值方法(for循环)
/*char b[20];
int n;
cin>>n;//要输入的字符长度
for(int i=0;i<n;i++)
{
cin>>b[i];
}
cout<<b[2];
return 0;*/
//第三种赋值方法:初始化字符串的值
/* char c[20]={'h','e','l','l','o'};
cout<<c[2];
return 0;*/
//第四种:在定义时直接将字符串赋值给字符数组
/* char d[]="hello world";
cout<<d[5];
return 0;*/
//第五种:利用strcpy函数 string copy(字符串复制)
char e[20];
strcpy(e,"hello world");
/*函数求是字符串的实际长度,
它可以用来获取动态实际字符数组的长度,是从开始到遇到第一个“\0”,
如果只是定义没有赋予初始值,这个结果是不确定的,它会从数组的首地址开始一直找下去,直到遇到“\0”停止查找。"\0"不包括在长度中 */
cout<<strlen(e);//头文件是 include<cstring>
return 0;
}
三、字符型数组的比较
1.第一种:strcmp (<cstring>)
strcmp() 会根据 ASCII 编码依次比较 str1 和 str2 的每一个字符,直到出现不到的字符,或者到达字符串末尾(遇见\0
)。
返回值:
- 如果返回值 < 0,则表示 str1 小于 str2。
- 如果返回值 > 0,则表示 str2 小于 str1。
- 如果返回值 = 0,则表示 str1 等于 str2。
2.第二种:逐个比较
四、数组的调用
1.传值调用
eg:
void student(char a[])
int main{
char a[20];
student(a)//用数组名即可
}
2.传地址调用,改变实参
void teacher(char* a)//取地址
int main{
char a[20];
teacher(a);
}