字符型数组
来源:互联网 发布:北大软件 合肥易云 编辑:程序博客网 时间:2024/06/06 01:47
1、聚合类型,只有部分初始化时,其余部分为0('\0')
char arr[5] = {'a', 'b'};//等价于char arr[5] = {'a', 'b' ,‘0’,‘0’,‘0’};
2、未初始化时,初始值为随机值。
3、利用字符串初始化时,可省略大括号。
char brr[5] = {"abc"};//等价于char brr[5] = "abc"
4、字符串一定以\0结尾,但是字符串不可见。\0是字符串结尾标记,字符串一定有‘\0'结尾。
char crr[] = "abcd'// 5个字节,可以打印。%s格式化字符串
5、遇到‘\0'就认为字符串结束。
printf("%s\n","haha\0abcd");// 接果为haha
6、烫:对应十六进制为oxcccc。 //这是出现越界或者未初始化时,定义的一个十六进制数,对应的汉字为烫
屯:对应十六进制为oxcdcd。 //这是出现越界或者未初始化时,定义的一个十六进制数,对应的汉字为屯
7、字符串拷贝
int main()
{
char str1[100] = "abcd";// 聚合类(数组)只能在初始化时进行整体赋值
char str2[100] = "xyz";
//char str3 =str1; // error,字符串拷贝不能直接赋值
}
void Mystrcpy1(char *str1, char *str2) //利用数组拷贝字符串
{
int i;
for(i=0; str2[i] != '\0'; i++)
{
str1[i]=str2[i];
}
str1[i] = '\0';
}
void Mystrcpy2(char *str1, char *str2) //利用指针拷贝字符串
{
int i;
for(i=0; str2[i] != '\0'; i++)
{
*(str1 +i)= *(str2 +i);
}
*(str1 +i) = '\0';
}
void Mystrcpy3(char *str1, char *str2) //利用while语句拷贝字符串
{
while(*str2 != '\0')
{
*str1 = *str2;
str1++;
str2++;
}
str1[i] = '\0';
}
void Mystrcpy4(char *str1, char *str2) //利用while语句拷贝字符串
{
while(*str2 != '\0')
{
*str1++ = *str2++;//常考
}
str1[i] = '\0';
}
void Mystrcpy5(char *str1, char *str2) //利用while语句拷贝字符串
{
while(*str1++ = *str2++);//*与++为同一优先级,而且从右先左运算,所以先算str1++,在解指针。
//但这里为后置++,所以第一次运算时结果不变,所以解指针时,解的是*str1,而不是*(str1+1).
//由于这里为赋值语句,所以要注意终止条件,而数组最后以\0结尾,故最后一句为:*str1 = '\0',而'\0'的对应值为0,所以循环结束。
}
8、返回值:返回目标首元素地址。这是一个历史遗留问题,目的是解决链式表达问题。
链式表达,如:int a=b=c=1;//将1赋值给从,然后又将c赋值给b,最后将b赋值给a
Mystrcpy5(str1,Mystrcpy(str2,str3));//将str3拷贝给str2,然后将结果(str2)拷贝给str1
- 字符型数组
- 字符数组和 字符型指针
- 字符数组与字符型指针变量
- 整型转字符数组型
- 字符数组
- 字符。数组
- 字符数组
- 字符数组
- 字符数组
- 字符数组
- 字符数组
- 字符数组
- 字符数组
- 字符数组
- 字符数组
- 字符数组
- 字符数组
- 字符数组
- maven pom.xml 依赖问题, mrunit
- xargs的使用
- ACdream
- c语言
- 【Scikit-Learn 中文文档】新异类和异常值检测
- 字符型数组
- 为项目需要准备开发板
- javaEE防盗版-License开发
- [源码]跳转MIUI神隐模式列表以及具体设置界面
- 关于linux的vi命令快速记忆方法
- 文章标题
- 静态数据成员
- 《Git 版本控制管理》 学习笔记
- Python2和Python3的metaclass使用