c++字符数组和字符指针区别以及str***函数

C风格字符串都是以’\0’结尾的。所以如果拷贝一个字符串,请确保计算的长度已经考虑了这个结尾符号。
另外C风格的字符串是在内存上动态申请数组存储的,所有的保护措施需要申请者自己维护,new过之后一定要delete。

字符指针

//先在文字常量区为"abcde"常量分配6B,接着在栈里为指针pStr分配4B,并接收"abcd"字串的首地址

char* pStr = “abcde”;
pStr[0]='h';    //error
int n1= sizeof(pStr ); // n1 值: 4
int n2 = strlen(pStr ); // n2 值:5

字符数组

//在栈区分配连续的6B,内容为’a’,‘b’,‘c’,‘d’,‘e’,’\0’并把首地址标记为arr

char arr[] = " abcde ";
arr[0]='h';     //合法
int n3= sizeof(arr);  //n3值:6
int n4= strlen(arr);   //n4值:5

总结

字符指针是指向常量区字符串的指针,其值不能改变,但可以改变所指对象,是一个常量指针。字符数组是将字符放在数组内,可以改变其内容。

strcpy 函数

原型:char * strcpy ( char * destination, const char * source )
功能:将字符串source拷贝到字符串destination中
原型:char * strncpy ( char * destination, const char * source, size_t num );
功能:将字符串source中前num个字符拷贝到字符串destination中

strcat 函数

原型:char * strcat ( char * destination, const char * source );
功能:将字符串source接到字符串destination的后面
原型:char * strncat ( char * destination, const char * source, size_t num );
功能:将字符串source的前num个字符接到字符串destination的后面

strlen 函数

原型:size_t strlen ( const char * str );
功能:统计字符串 str 中字符的个数

strchr(p, c) // 在字符串中查找指定字符
strstr(p, p1) // 查找字符串
strpbrk(p, p1) // 以目标字符串的所有字符作为集合,在当前字符串查找该集合的任一元素
strspn(p, p1) // 以目标字符串的所有字符作为集合,在当前字符串查找不属于该集合的任一元素的偏移

猜你喜欢

转载自blog.csdn.net/shayne000/article/details/88565411