栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c语言字符指针和const修饰指针

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c语言字符指针和const修饰指针

字符指针的操作
#include 
// 字符指针

int main() {


    char str[] = "hello world";
//    str++;  不可以
    printf("str = %sn", str);
    printf("str = %pn", str);
    char *p = str;
    *p = 'm';
    p++;
    *p = 'i';
    printf("str = %sn", str);
    printf("p = %sn", p);
    p = "faye";

    printf("str = %sn", str);
    printf("p = %sn", p);
    // 字符指针 指向字符串区域
    char *q = "haha";
    q++;
    printf("q = %sn", q);

    int *arr = {111, 222, 33};
    printf("arr = %dn", arr);

    return 0;
}

字符串拼接案例
#include 
// 字符串拼接函数
void mystrcat(char *dest, const char *src){
    //    src[0] = 'a'; const char *src 有 const 修饰 就变成了只读, 目的就是安全
    int len1 = 0;
    int len2 = 0;
    
    while (dest[len1]){
        len1++;
    }
    printf("len1 = %dn", len1);
    while (src[len2]){
        len2++;
    }
    printf("len2= %dn", len2);
    dest[len1] = src[0];
    dest[len1+1] = src[1];
    dest[len1+2] = src[2];
    for (int i = 0; i < len2; i++) {
        dest[len1+i] = src[i];
    }
}
int main() {
    char dst[100] = "hello faye";
    char src[]  = "123456666";
    // 编写函数将 src字符串 追加到 dst后面
    mystrcat(dst, src);
    printf("%sn",dst);

    return 0;
}
const 修饰指针变量
#include 

int main() {
    //const修饰一个变量为只读
   const int a = 10;
    // a = 100; error
   // 指针变量  指针指向的内存 是 2个不同的概念
   char buf[] = "asdfghjkl";
   // 从左往右看,跳过类型,看修饰哪个字符
   // 如果是*, 说明指针指向的内存不能改变, 但是指针的指向可以变
   //  const修饰的是指针,指针的指向可以改变, 指针指向的值(内存区域)不能更改
   const char *p = buf;
//   p[0] = 'a';  error
    p = "ddddddddd";
    printf("p = %sn",p);
    printf("buf = %sn",buf);
    // 如果是指针变量,说明指针的指向不能改变,指针的值能修改
    //const修饰的是常量 , 指针的指向不可以改,指针指向的值(内存区域)可以更改
    char * const p2 = buf;
//    p2 = "ddddddd";
    p2[1] = 'x';
    printf("p2 = %sn",p2);
    printf("buf = %sn",buf);
    // p3 为只读 指向不能变,指向的内存也不能变
    const char * const p3 = buf;
//    p3 = "dad";error
//    p3[0] = 'a';
    return 0;

}

  1. 有个数组,找出第二大的数,并且打印出来(使用*操作数组元素个数,不要使用[])
    int a[] = {5,100,32,45,21,67,32,68,41,99,13,71};
 
  1. 不使用库函数,实现字符串拷贝功能
    char src[100] = “hello”;
    char dst[100]; //把src的内容拷贝给dst
#include 

int main() {
    char src[100] = "hello";
    char dst[100]; //把src的内容拷贝给dst
    char *p1 =src;
    char *p2 =dst;
    p2 = p1;
    printf("%s n", p2);
    printf("%s n", dst);

    return 0;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/691307.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号