美文网首页十天学会C语言程序员
C语言day09-05指针变量复用

C语言day09-05指针变量复用

作者: liyuhong165 | 来源:发表于2016-05-04 23:39 被阅读71次

    pragma mark 指针变量复用

    pragma mark 概念

    pragma mark 代码

    #include <stdio.h>
    void change();
    void change2(char *p);
    void change3(int values[]);
    void change4(int *p);
    char *demo();
    char *demo2();
    
    int main()
    {
    #warning 
        
        /*
         只要是数据类型就具有3个特点
         1. 可以用来定义变量
         2. 可以用来作为形参和实参
         3. 作为返回值
         */
        
        /*
        int num = 10;
        change(num);
        printf("num  = %i\n",num);
        
    //    char *name = "lyh"; // 指针指向一个字符串 那么这个字符串是一个常量 不可以修改
    //    change2(name);
        
        int nums[] = {1,3,5};
    //    change3(nums);          // 数组名就是数组的地址
        change4(nums);          // 数组名就是数组第0个元素的地址
    
        printf("nums[0] = %i\n",nums[0]);
         */
        
    #warning 指针作为返回值
        
        char *name = demo();
        printf("name = %s\n",name);
        
        
        char *name2 = demo2();
        printf("name2 = %s\n",name2);
        
        return 0;
    }
    char *demo2()
    {
        char name[] = "lyh"; // 存储在栈区 函数调用完会释放
        return name;
    }
    
    char *demo()
    {
        char *name = "lyh"; // 存储在常量区 所以能打印出来
        return name;
    }
    // 专业
    void change4(int *p)
    // int *p \
    == nums; \
    == int*p == &nums; \
    == int *p == &nums[0]
    // int *p; p = nums; p == nums;
    {
        p[0] = 998;
    }
    // 不专业
    void change3(int values[])
    {
        values[0] = 998;
    }
    
    /*
    void change2(char *p)
    {
        *p = "lys";     // 直接挂了
    }
    */
    void change(int value)
    {
        value = 55;
    }
    
    

    相关文章

      网友评论

        本文标题:C语言day09-05指针变量复用

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