C的字符串和字符数组之间的关系
2014-09-04 10:18
337 查看
字符数组初始化:
c++ primer有专门解释:字符数组有两种初始化方式:
1、以字符字面值初始化:char a[] = {'a','a','a','a','a'}; 不含null('\0')
2、以字符串字面值初始化:char a[] = "aaaaa" ;含null('\0')
int i,j=0;
char acStr[] ={'a','a','a','a','a'};//这个是字符数组,只含有5个字符
char *pcStr = "aaaaa";//这个是字符串,含有6个字符,即5个a加一个结束符'\0'
for(i=0;i<sizeof(acStr);i++)
{
printf("%c",acStr[i]);
j++;
}
printf("%d\n",j);
j=0;
for(i=0;i<sizeof("aaaaa");i++)
{
printf("%c",pcStr[i]);
j++;
}
printf("%d\n",j);
可以看到字符数组初始化的末尾没有'\0',但是字符串初始化的末尾有'\0'
char a[10]={'J','u','s','f','o','r'};
申明的字符数组的长度是10,但是初始化的只有a[0-5],后面的a[6-9]没有进行赋值 ,这种情况下a[6-9]默认是'\0'。
在C里面没有单独的字符串,字符串通常都是作为字符数组来处理的,C里面也没有头文件string.h,使用这个头文件只限于C++,可能会有人说在C代码里面见过strlen来计算字符串长度的,其实strlen()并不是包含在string.h这个头文件中。strlen()函数是计算字符串里面的字符的个数,将'\0'作为结束的标志, 但是'\0'是不计算在内的。
但是注意一点:char c[10]={"1111111111"};那么strlen(c)的结果是未知的,直到他遇到一个null为止,因为c[10]里面没有'\0'结束标志。
char acStr[] ={'a','a','a','a','a','a','a'};//这个是字符数组,只含有5个字符
char *pcStr = "aaaaaaaaaa";//这个是字符串,含有6个字符,即5个a加一个结束符'\0'
pcStr=acStr;
printf("%d\n",strlen(acStr));
printf("%d\n",strlen(pcStr));
printf("%d\n",sizeof (acStr));
printf("%d\n",sizeof (pcStr));
printf("%x\n",pcStr);
printf("%x\n",acStr);
c++ primer有专门解释:字符数组有两种初始化方式:
1、以字符字面值初始化:char a[] = {'a','a','a','a','a'}; 不含null('\0')
2、以字符串字面值初始化:char a[] = "aaaaa" ;含null('\0')
int i,j=0;
char acStr[] ={'a','a','a','a','a'};//这个是字符数组,只含有5个字符
char *pcStr = "aaaaa";//这个是字符串,含有6个字符,即5个a加一个结束符'\0'
for(i=0;i<sizeof(acStr);i++)
{
printf("%c",acStr[i]);
j++;
}
printf("%d\n",j);
j=0;
for(i=0;i<sizeof("aaaaa");i++)
{
printf("%c",pcStr[i]);
j++;
}
printf("%d\n",j);
可以看到字符数组初始化的末尾没有'\0',但是字符串初始化的末尾有'\0'
char a[10]={'J','u','s','f','o','r'};
申明的字符数组的长度是10,但是初始化的只有a[0-5],后面的a[6-9]没有进行赋值 ,这种情况下a[6-9]默认是'\0'。
在C里面没有单独的字符串,字符串通常都是作为字符数组来处理的,C里面也没有头文件string.h,使用这个头文件只限于C++,可能会有人说在C代码里面见过strlen来计算字符串长度的,其实strlen()并不是包含在string.h这个头文件中。strlen()函数是计算字符串里面的字符的个数,将'\0'作为结束的标志, 但是'\0'是不计算在内的。
但是注意一点:char c[10]={"1111111111"};那么strlen(c)的结果是未知的,直到他遇到一个null为止,因为c[10]里面没有'\0'结束标志。
char acStr[] ={'a','a','a','a','a','a','a'};//这个是字符数组,只含有5个字符
char *pcStr = "aaaaaaaaaa";//这个是字符串,含有6个字符,即5个a加一个结束符'\0'
pcStr=acStr;
printf("%d\n",strlen(acStr));
printf("%d\n",strlen(pcStr));
printf("%d\n",sizeof (acStr));
printf("%d\n",sizeof (pcStr));
printf("%x\n",pcStr);
printf("%x\n",acStr);
相关文章推荐
- c语言中的字符数组和字符串之间的关系
- 完成一程序演示字符数组、C风格字符串、std::string和MFC中的Cstring类型之间的相互转换
- 字符串和字符数组之间的转换
- Delphi字符串、PChar与字符数组之间的转换
- 字符串与数值、字符数组之间的转换
- 字符串、字符数组、数组、指针关系总结
- js字符串与字符数组之间的转换
- *Delphi的字符串、PChar和字符数组之间的转换
- 十六进制字符串和byte数组之间的各种转换关系
- 字符数组和结束符/0之间的关系
- 字符串和字符数组之间的转换
- 字符、字符串、数组之间的转换
- 字符串与字符数组之间的转换(JAVA程序设计基础篇9.2.9)
- *Delphi字符串与字符数组之间的转换(初始化的重要性)
- [转]字符串和字符数组之间的转换
- 字符和字符串的关系:字符串可以看成是只读字符数组
- Delphi字符串、PChar与字符数组之间的转换
- 字符串和字符数组之间的转换
- java中字符串与字符数组之间的转换
- 字符串,字符数组,整型数组,List之间的转换应用