[关闭]
@rulerstorm 2014-06-08T02:42:31.000000Z 字数 1942 阅读 2343

c语言Tips:

理论


1. 关于printf。


2. 关于scanf。


3. “逗号”运算符

  1. 在for语句中,使用逗号运算符隔开两句,可一次进行两次动作。
    例如:for(i=1, j=1; i<=10; j++);

  2. 逗号运算得最终取值为右边得表达式。 注:附值符号返回值为左值。
    如:i = ( 40, 50); 此时i被附值为50 。


4.


5. 关于getchar


6. 关于gets


7. 关于char类型


9. 未定义变量的默认值:

堆栈内变量默认值全为c,静态变量、全局变量默认值全0


10.深入理解++i 和 i++

亲,不要去考虑优先级。即使++i的优先级是最高的,也不会每次都最优先运行。
请看范例:int j = 1;i = j - ++j;,运算结束后,i=-1,说明左++并没有在整个式子中最优先,仅表示在使用后一个j时,先把j增1,而已。

同样的,i = j++ -j;,结果i也等于-1。说明并不是在整个式子结束以后再j增1,其实是在把j放入式子以后立马给j增1。

从硬件角度考虑,怎么解释呢?有待研究。


11. main函数的参数

main函数的规范申明:int main(int argc, char const *argv[]),其中:


12. 关于数组在函数中的参数传递

数组在参数传递中,默认传递的就是指针(地址),并100%丢失数组长度信息。

例如:func(int a[])等价于func(int * a)等价于func(int a[10])

值得注意的是:int a[10]; sizeof(a); 得40
而如果a作为参数传递到函数中时,sizeof(a);得4。 (int的长度)(说明长度信息丢失)

另外,二维和三维数组定义为形参数时,除第一维外都需显示指定,如func(a[][10])


13. 指向数组的指针

定义: int (* name)[MAX],其中MAX为指向的数组长度。
如何使用:


14. 指向指针的指针

定义:int * (*name)
如何使用:一般在需要在调用函数后返回指针时定义在形参中,调用该函数时,传入指针的地址即可。


15. 关于static

用法一:

用法二:


16. 多文件的全局变量申明

由于include的特性,全局变量的定义在被include两次后会报错(重复定义)。需要把定义改为申明
用法:在头文件中,extern int name。 在主文件中:int name = 1即可。


17. 关于malloc

malloc的空间在内,系统不会自动释放。局部变量在,调用完函数后自动销毁。全局变量在系统常量区


添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注