• C语言 指针引用字符串基础


    /*
      数组名和字符指针变量区别在P262
    */
    #include<stdio.h>

    //void copy(char a[],char b[])       //定义一个复制字符串的函数
    void copy(char *a, char *b)         //等价于传入数组名
    {
        int i;
        // for(i =0; a[i] != ''; i++)
        // {
        //     //b[i] = a[i];      
        //     *(b+i) = *(a+i);       //这两行同理
            
        // }

        //for还可以写成:     当形参用指针变量的时候也可以这样写
        for(; *a != ''; a++,b++)
        {
            *b = *a;
        }

        b[i] = '';       //在末尾手动加入‘’结束字符串复制,以免在末尾出现未知字符
    }
    //总结,调用函数时,不管是传入数组名还是字符指针,本质上是一样的,编译器会把数组名当作指针变量处理
    //函数的形参也是同样的道理
    int main(void)
    {
        char str[] = "i love you";      //其实最后一个字符是‘’,字符串的结束标值,但是打印不出来
        printf("%s ",str);
        printf("%c ",str[7]);
        printf("%c ",*(str + 7));      //用指针的方式输出

        char * li = "wo shi dahema";       //声明一个字符型指针变量,存储的是字符串首字符的地址
        printf("%s ",li);
        printf("%c ",li[7]);
        printf("%c ",*(li + 7));  

        int a[] = {1,2,3,4,5,6,7,8,9};
        //int * a = {1,2,3,4,5}     //报错,其他类型无法这样使用
        printf("%d ",a);
        printf("%d ",a[5]);
        printf("%d ",*(a+5));

        //字符串的复制
        char str_copy[15];
        for(int i=0; str[i] != ''; i++)
        {
            //*(str_copy + i) = *(str + i);   //把每个字符依次赋值
            str_copy[i] = str[i];              //同理
        }
        printf("复制后的字符串:%s ",str_copy);

        //字符串的复制方法二:
        char str_copy2[15];
        char *x, *y;
        x = str;
        y = str_copy2;
        for(;*x != ''; x++,y++)
        {
            *y = *x;
        }
        printf("复制后的字符串2:%s ",str_copy2);

        //用函数实现复制
        char string[] = "I am the king of the world.";
        char string_copy[30];
        char *p, *q;
        copy(string,string_copy);   //传入数组名

        p = string;
        q = string_copy;
        //copy(p,q);                  //等价于入传入数组名
        printf("%s ",string);
        printf("%s ",string_copy);

        return 0;
    }
  • 相关阅读:
    java代码配置sqlserver数据源及连结的demo例子
    mysql配置 是否忽略大小写 lower_case_table_names
    查询30天以内的数据SQL
    nginx
    PCB随笔
    chengxu
    Powershell
    对象模型
    Thinking UML
    排序初级排序
  • 原文地址:https://www.cnblogs.com/hemage/p/13182774.html
Copyright © 2020-2023  润新知