@rulerstorm
2014-06-08T10:42:31.000000Z
字数 1942
阅读 2498
理论
control + z
,即为EOF, 值为-1在for语句中,使用逗号运算符隔开两句,可一次进行两次动作。
例如:for(i=1, j=1; i<=10; j++);
逗号运算得最终取值为右边得表达式。 注:附值符号返回值为左值。
如:i = ( 40, 50)
; 此时i被附值为50 。
堆栈内变量默认值全为c,静态变量、全局变量默认值全0
亲,不要去考虑优先级。即使++i的优先级是最高的,也不会每次都最优先运行。
请看范例:int j = 1;
,i = j - ++j;
,运算结束后,i=-1,说明左++并没有在整个式子中最优先,仅表示在使用后一个j时,先把j增1,而已。
同样的,i = j++ -j;
,结果i也等于-1。说明并不是在整个式子结束以后再j增1,其实是在把j放入式子以后立马给j增1。
从硬件角度考虑,怎么解释呢?有待研究。
main函数的规范申明:int main(int argc, char const *argv[])
,其中:
暂时不明
数组在参数传递中,默认传递的就是指针(地址),并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])
定义: int (* name)[MAX]
,其中MAX为指向的数组长度。
如何使用:
name++
相当于二维数组跳到下一行。name[1]
指向第二行的首元素,类型为int *
!!!即指向int的指针。定义:int * (*name)
如何使用:一般在需要在调用函数后返回指针
时定义在形参中,调用该函数时,传入指针的地址即可。
用法一:
用法二:
由于include的特性,全局变量的定义在被include两次后会报错(重复定义)。需要把定义改为申明。
用法:在头文件中,extern int name
。 在主文件中:int name = 1
即可。
malloc的空间在堆
内,系统不会自动释放。局部变量在栈
,调用完函数后自动销毁。全局变量在系统常量区
。