C风格字符串

以空字符null结束的字符数组:

char ca1[] = {'C','+','+'};        //no null,not C-style string

char ca2[] = {'C','+','+','\0'};      //explicit null

char ca3[] = {'C','+','+'};        //null terminator added automatically

const char *cp = "C++";        //null terminator added automatically

char *cp1 = ca1;            //points to first element of a array,but not C-style string

char *cp2 = ca2;            //points to first element of a null-terminated char array

ca1和cp1都不是C风格字符串:ca1是一个不带结束符null的字符数组,而指针cp1指向ca1,因此,它指向的并不是以null结束的数组。其他的声明则都是C风格字符串,数组的名字即是指向该数组第一个元素的指针。

1、C风格字符串的使用

C++通过(const)char *类型的指针来操纵C风格字符串

const char *p = "some value";

while(*cp){

//do something to *cp

++cp;

}

如果cp所指向的字符数组没有null结束符,则此循环将会失败。这时,循环会从cp指向的位置开始读数,直到遇到内存中某处null结束符为止。

2、C风格字符串的标准库函数

for C:

#include<string.h>

for C++:

#include<cstring>

 

strlen(s);

strcmp(s1,s2);

strcat(s1,s2);

strcpy(s1,s2);

strncat(s1,s2,n);

strncpy(s1,s2,n);

这些标准库函数不会检查其字符串参数。传递给这些标准库函数例程的指针必须具有非零值,并且指向以null结束的字符数组中的第一个元素。一些标准库函数会修改传递给他的字符串,这些函数假定它们所修改的字符串具有足够大的空间接收本函数新生成的字符,程序员必须确保目标字符串必须足够大。

字符串值真的比较是比较指针上存放的地址值

if(cp1 < cp2)  //compare addresses,not the values pointed to

如果cp1和cp2指向同一数组中的元素(活该数组的溢出位置),上述表达式等效于比较cp1和cp2中存放的地址;如果这两个指针指向不同的数组,则该表达式实现的比较没有定义。

转载于:https://www.cnblogs.com/BeyondTechnology/archive/2010/09/29/1838058.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值