在c语言中的初级碰撞
学了这么长时间的c语言了,一直都在皮毛之间徘徊。是时候总结一下了,那些在C语言中的磕磕碰碰也该有一个了断。错略的总结了一下,居然发现C语言就这么一点点内容,不看不知道,原来我一直都在同一个问题上反复犯错。
关于C语言的总结图示
花了两个小时,整理出来的精华,和自己的不足。
C语言的函数传参
-
调用函数传参一定是实参,实参包括数,字符,字符串,数组,指针等等
-
而函数中,定义的就是形式参数了,这里的形式参数不会随着函数的进行而改变函数外的值,总之还是记住一句话{形参是实参的拷贝}
-
想要使用函数而改变函数外的变量,那么一定是参入要操作对象的指针,
就拿我最懵逼的数组来说,我以前一直是记住函数定义的模板,后面还是不断在数组传参上栽跟头。主要是还是不能理解函数对要操作内容的动作原理。
要操作一维数组,其实你要操作的是数组里面的数或者是字符串等等,所以我们要传入的就是一位数组的首元素的地址
int tes1t(int arr[10],int n){ //.......... } int test2(int arr[ ],int n ){ //......... } int test3 (int*arr, int n ){ //.........,这里的arr与其说是数组名,不如说是这个数组中第一个元素的地址 }//
这里的二维数组更是一模一样,没有任何不同,传入的是操作对象的指针。二维数组的内容就是一位数组
int test1(int arr[10][10]){ //........ } int test2(int arr [ ][10]){ //........ int test3(int (*arr)[10]){ //........尤其是这个参数可以很明显的看见,参数是这个二维数组中的第一个元素的地址,也就是一位数组的指针 }
static的用法
这也是老大难问题,我都不敢用,怕用错。其实就三点{
1.局部变量 -》用于局部变量时,这样就是相当于延长变量的生命周期,同时定义时的运算只进行一次
2.全局变量 -》用于全局变量时,这样就是限定了这个变量只会在本文件中能够被使用(由于C语言的main函数主导型,会有多个文件同时存在)
3.函数 -》用于函数和全局变量有点像,作用于函数以后他也是限定来函数只能在本文件之中能被调用}
const
在const上,主要是指针上的迷惑
int i=0;
int * const p=&i; //p是const常量,不能再修改
*q=26;//OK
q++;//ERROR---->>这里就是很好的解释了,cons+指针变量后面发,指针的地址不能变,但是改地址上的内容可以变化
const int* p=&i;//不能通过这个指针修改那个变量
*p=26;//ERROR (*p)是const常量
i=26;//OK
p=&j;//OK
int const* p=&i;(等价于const int* p=&i;)