• 个人C语言问题记录


    1、返回二重指针过程中报错

    read_csv.c:57:12: warning: function returns address of local variable [-Wreturn-local-addr]
         return data;
                ^~~~
    
    • 1
    • 2
    • 3

    问题原因,在返回局部变量,函数返回了局部变量(函数中的局部变量存放在stack中,函数执行完成之后会自动释放,因此不应将局部变量的指针作为返回值。)。在定义过程中加static

    static int *data[84];
    
    //data[COUNT] = (int*)malloc(84 * sizeof(int));   //每一行分配内存
    
    • 1
    • 2
    • 3

    用完记得free

    2、函数返回多个值

    方法一:设置全局变量,这样你在形参中改变全局变量,在实参中也会有效。所以你可以在形参中改变多个全局变量的值,那么在实参中就相当于返回多个值。
    
    方法二:如果你用数组名作为形参,那么你改变数组内容,比如排序,或者进行加减运算,回到实参时依然是有效的。这样也会返回一组值。
    
    方法三:可以利用指针变量,这个原理和方法二是一样的,因为数组名本身就是数组首元素的地址。就不多说了
    int **Open_CSV(int *count){
    int Number = 99;
    *count = Number
    }
    最后会改变值
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    3、无法修改左值

    宏定义无法修改

    read_csv.c:38:26: error: lvalue required as increment operand
                         COUNT++;
                              ^~
    
    • 1
    • 2
    • 3

    4、若使用指针需要初始化和申请地址

    int *count , a = 0, b = 0, c = 0;
        static int **data, *IQ_I[42], *IQ_Q[42]; 
        *IQ_Q = &b, *IQ_I = &c, count = &a;
        data = Open_CSV(count);  
    
    • 1
    • 2
    • 3
    • 4

    不初始化也许程序看起来没什么问题,但可能出现野指针的问题,运行到一半地址会突然变掉。导致出现出现,

  • 相关阅读:
    金仓数据库 KingbaseES 插件DBMS_OUTPUT
    mybatis学习(2):基本设置和核心配置
    Shell命令
    Java自学-分支结构
    uniapp cors错误
    云IDE开发环境和使用体验
    青少年软件编程C++二级题库(41-50)
    JAVA开发(Redis的使用, redis数据类型)
    图论基础 —— 概述
    Linux命令查看pcap包报文数量、包体包含内容、包长
  • 原文地址:https://blog.csdn.net/qq_43313294/article/details/134525738