函数和数组2个章节部分学习总结
1、之前对函数参数传递指针没有理解到位,以为像传其它的数据一样,只是数据的一份拷贝,然后不修改原始的数据,函数参数如果是传递的指针,传递给函数是指针的一份拷贝,可以通过指针间接访问数据,从而得到修改原始数据,反正不能把指针变量本身传递给一个函数,
如果把这个函数里面的进行在堆区分配内存空间,只不过是指针的拷贝的这个指针分配了内存,如果不返回,编译器会自动分配和回收,无法使用,实际指针还是没有分配内存,如果想要想要给实际指针分配内存,我们可以在函数里面分配内存了然后return这个指针,或者用二级指针作为参数也行,二级指针分配的内存是真正给了指针变量本身,然后我们绝对不可以在函数返回堆区的指针,因为函数退出时,它的栈也就被清除了,之后其内容会被别的局部变量、函数调用保存的上下文等信息替换掉,所以返回的这个栈偏移就失去意义了。
2、之前不知道在函数参数中,声明数组可以不指定长度,不声明是合法的,因为函数不为数组元素分配内存,调用时把实参数组名里面的常量地址传给形参数组名,就是说形参数组名保存的就是实参数组名里面存的地址。这样在被调用函数内部,形参数组就指向了和实参数组名指向的同一个数组。
3、函数递归调用自己的时候ÿ
C和指针之数组和函数部分总结
这篇博客总结了C语言中关于指针、数组和函数的要点。内容包括:函数参数传递指针的理解,数组作为函数参数的特性,递归调用的开销,可变参数列表的使用,以及对数组名、指针、内存管理和预定义关键字如`auto`、`register`、`volatile`、`const`和`NULL`的深入探讨。同时提到了`assert`宏的使用和回溯算法的应用。
摘要由CSDN通过智能技术生成