标签:
1. C语言 - 字符数组/字符串/字符指
字符串 - 含‘\0‘的字符数组。
字符串常量 - “hello”
strlen等操作基于字符串为处理对象,以‘\0‘为结束标识,如果以不含结束标识的字符数组为处理对象,会造成“内存访问冲突”等问题;
char* strcpy(char* strDest, const char* strSource) char* strcmp(const char* string1, const char* string2) // string1 == string2 返回0,string1>string2 返回值>0
1 char* strcpy(char* strDest, const char* strSource) 2 { 3 /*注重检查指针的有效性,提高代码的鲁棒性 4 如果利用 !strDest判断会引入隐式类型转换*/ 5 assert( strDest != NULL && strSource != NULL); 6 7 char* ret = strDest;// 8 9 while( (*strDest++ = *strSource++) != ‘\0‘);//不采用索引遍历字符串,直接通过指针递增访问,但注意循环结束后指针已经指向字符串的末尾 10 return ret;//为何返回char*, 目的是支持链式表达式 11 12 }
char arr_char_1[] ={‘a‘,‘b‘,‘\0‘,‘c‘,‘d‘}; char arr_char_2[]="hello"; char *p="hello"; cout<<sizeof(arr_char_1[])<<endl; //5 cout<<strlen(arr_char_1[])<<endl; //2 cout<<sizeof(arr_char_2[])<<endl; //6 cout<<strlen(arr_char_2[])<<endl; //5 cout<<sizeof(p)<<endl; //4 cout<<strlen(p)<<endl; //5
标签:
原文地址:http://www.cnblogs.com/helo-blog/p/4333799.html