指针和const的使用------const修饰谁就是对谁加锁
const int *p = &a || int const *p = &a; const放在*前面----可以指向a,但是不可以修改a的值
int* const p = &a; 相当于对P加锁;相当于p的值变成常量
eg:1)
int a = 10;
int b = 20;
const int* p = &a; -> 修饰指向问题,不能修改指向变量的值
常见情况: *p = 100;/error
*p = &b;/right
*p = 200;/error
eg:2)
int a = 10;
int b = 20;
int* const p =&a; -> 修饰指针变量本身。一经指向a,不能指向其他地址。没有限定a本身的值是否被修改
p = &b;//error
*p = 100;//right
eg:3)
const int a = 10;//a常变量
int* p = &a;/error
const int* p = &a;//right
eg:4)
const int* const p = &a;//限定p指向a,不能指向其他变量且不能改a的值
*/
//字符串基本认知
//int main()
//{
// char ch[] = { 'h','e','l','l','o' };//------5个字符
// char arr[] = "hello";//6个字符-----后有一个默认的''
// int len_ch = sizeof(ch) / sizeof(ch[0]);
// int len_arr = sizeof(arr) / sizeof(arr[0]);
// int len_string = strlen(arr);//求第一个''前面的数据个数--不包含''
// printf("ch :%d arr:%d 字符串长度%d", len_ch, len_arr,len_string);
// 数组和指针关系:(p+1) <==> &p[i] -----意思为加一个单元格
// const char *str = "hello";
// *(str + i) = 'z';//error
// *(str+i) -> str[i]
//指针形式 *** 作
// assert(str1 != NULL && str2 != NULL);
// int i = 0;
// while(*str1 == *str2)
// {
// if(*str1 == '' && *str2 == '')
// {
// return 0;
// }
// str1++;
// str2++;
// }
// if(*str1 > *str2)
// {
// return 1;
// }
// else if(*str1 < *str2)
// {
// return -1;
// }
// }
//int main()
//{
// const char* str1 = "abc";
// const char* str2 = "abcde";
// int num = strcmp(str1, str2);
// printf("%d", num);
//}
字符串的拼接 *** 作-------strcat
//char* my_strcat(char* str1, const char* str2)
//{
// assert(str1 != NULL && str2 != NULL);
// int len = strlen(str1);
// //给str链接str2数据
// int i = 0;
// for ( i ; i < strlen(str2); i++)
// {
// str1[len + i] = str2[i];
// }
// str1[len + i] = '';//说明字符串结尾标记为''
// return str1;
//}
//int main()
//{
// char ch[10] = "abc";
// char* res = my_strcat(ch, "def");//abcdef
// //strcat(char* str1,const char*str2)------将str2放到str1后面,所以str1可以变,str2不能变,所以是常量
// printf("%s", res);
// return 0;
//}
//strlen函数内容:
//unsigned int my_strlen(const char* str)
//{
// assert(str != NULL);
// unsigned int count = 0;
// while (*str != '')
// {
// count++;
// str++;
// }
// return count;
//}
//字符串的拷贝 *** 作----strcpy
char* my_strcpy(char* str1, const char* str2)
{
//指针 *** 作方式
assert(str1 != NULL && str2 != NULL);
while (*str2 != '')
{
*str1++ = *str2++;
}
*str1 = '';
return str1;
}
int main()
{
char str1[10] = "abc";
const char* str2 = "defghijk";
char* res = my_strcpy(str1, str2);
printf("%s", str1);
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)