指针和const的应用

指针和const的应用,第1张

指针和const的应用

指针和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);

}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5635979.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存