个人C语言问题记录

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

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

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

static int *data[84];

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

用完记得free

2、函数返回多个值

方法一:设置全局变量,这样你在形参中改变全局变量,在实参中也会有效。所以你可以在形参中改变多个全局变量的值,那么在实参中就相当于返回多个值。

方法二:如果你用数组名作为形参,那么你改变数组内容,比如排序,或者进行加减运算,回到实参时依然是有效的。这样也会返回一组值。

方法三:可以利用指针变量,这个原理和方法二是一样的,因为数组名本身就是数组首元素的地址。就不多说了
int **Open_CSV(int *count){
int Number = 99;
*count = Number
}
最后会改变值

3、无法修改左值

宏定义无法修改

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

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);  

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

你可能感兴趣的:(c语言,开发语言)