美文网首页
C语言指针函数

C语言指针函数

作者: 嗜血狂潮 | 来源:发表于2020-09-12 21:13 被阅读0次

    1、定义

    指针函数是一个返回值为指针的函数

    2、声明格式

    数据类型 * 函数名称(参数){
    语句;
    }

    3、代码找茬

    3.1 错误代码示例

    #include <stdio.h>
    #include <string.h>
    char *  mystring( )  {
         char str[20];
         strcpy(str, “Hello”);
         return str;
    }
    int  main(void)
    {
         printf(“%s\n”, mystring());
         return 0;
    }
    

    3.2 代码分析

    上述代码中,main函数即为打印一个字符串,字符串通过mystring()函数获得。在mystring()函数中,首先声明了一个字符数组str[],然后将“Hello”复制给字符数组str[],最后返回str[]数组。
    大致一看,似乎没有什么问题,但是结果是乱码。输出一定是str[]的内容,而str[]是mystring()函数的局部变量,在mystring()函数运行结束时,字符数组str[]从内存释放,于是输出为乱码。
    如果不想str[]从内存释放,可以将其改为static变量、字符串常量或全局变量。即将char str[20]改为static char str[20]即可。

    4、练习

    4.1 编写一个指针函数,删除一个字符串中的空格

    #include <stdio.h>
    #define N 50
    
    char *myDelSpaceFun(char *p);
    
    int main(int argc, const char *argv[])
    {
        char mystr[N] = "This is my homework.";
        printf("%s\n",myDelSpaceFun(mystr));
        return 0;
    }
    
    char *myDelSpaceFun(char *p)
    {
       //使用数组
        int i = 0 ;
        static char x1[N];
        while(*p != '\0')
        {   
            if(*p == ' ')
            {
                p++;
            }
            else
            {
                x1[i] = *p;
                p++;    
                i++;
            }
            printf("i = %d , x1=%c\n",i , x1[i]);
        }
        x1[i] = '\0';
        return x1;  
    }
    
    #include <stdio.h>
    #define N 50
    
    char *myDelSpaceFun(char *p);
    
    int main(int argc, const char *argv[])
    {
        char mystr[N] = "This is my homework.";
        printf("%s\n",myDelSpaceFun(mystr));
        return 0;
    }
    
    char *myDelSpaceFun(char *p)
    {
    //使用指针
        char *r = p , *w;
        w = p;
        while(*p != '\0')
        {   
            if(*p == ' ')
            {
                p++;
            }
            else
            {
                *r = *p;
                p++;    
                r++;
            }
        }
        *r = '\0';
        r = w;
        return r;
    }
    

    4.2 编写一个指针函数,实现字符串连接

    #include <stdio.h>
    #define N 50
    
    char *mystrcat(char *p , char *q);
        
    int main(int argc, const char *argv[])
    {
        char mystr[N] = "This is my homework.";
        char yourstr[N] = "This is your homework.";
        printf("%s\n",mystrcat(mystr , yourstr));
        return 0;
    }
    
    char *mystrcat(char *p , char *q)
    {
        char *r = p;
        while(*p != '\0')
        {
            p++;
        }
        while (*q != '\0')
        {
            *p = *q;
            p++;
            q++;
        }
        *p = '\0';
        return r;
    }
    
    

    第一次书写这种技术博文,如有错误,还望指出,谢谢,也希望广大网友能不吝赐教,共同交流,共同进步。

    相关文章

      网友评论

          本文标题:C语言指针函数

          本文链接:https://www.haomeiwen.com/subject/bmcgektx.html