欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C语言学习总结

程序员文章站 2022-07-15 08:50:59
...

目录

变量与函数

指针与数组

位运算

运算符和优先级

持续更新中。。。。。。


变量与函数

  1. 变量既可以定义为外部的(全局的)也可以定义为局部的;函数只能定义为全局的,也就是说不能在函数中再定义函数
  2. 全局变量和函数从其声明的地方开始生效,到其所在文件末尾失效。
  3. 函数的声明既可以在函数外部也可以在函数内部(对于函数来说声明不同于定义),以int max(int x, int y)为例:

在函数外声明:
 

...
int max(int x, int y);    //声明函数
int main(){...}
int max(int x, int y){...}    //函数定义
...

在函数内部声明(只在声明其的函数内部生效):
 

...
int main()
{
	int x, y, max(int x, int y);	//声明了一个两个int形参和返回int的函数
	...
	max(x, y);
}
int max(int x, int y){...}	//函数定义
...

指针与数组

  1. C语言的一大优点就是将指针、数组和地址的算术运算结合起来。使用数组下标所能完成的操作用指针都能完成。一般来说,用指针编写的程序比用数组下标编写的程序要快,因为所有的下标都要转换为指针形式,如:
    在取a[i]值时C语言要首先转化为地址a+i然后在访问其值。

  2. 有效的指针运算:相同类型指针之间的赋值运算、指针同整数之间的加减运算、指向相同数组中的两个指针之间的减法或赋值运算、将指针赋值为0或与0之间的比较运算。

  3. void * 指针指向空类型的元素,且任何类型的指针转换为void *,并且在将它转换回原来的类型时不会丢失信息,可用于编写一些可复用、通用性好的函数,如malloc函数。

位运算

  1. &:常用来将某位数置为0,如:11110110 & 11111101 = 11110100将第二位置为0,别的位保持不变。
  2. |:常用来将某位数置为1,如:11110110 | 00001000 = 11111110将第四位置为1,别的位保持不变。
  3. ^:常用来将某位数取反,如:11110110 ^ 00000010 = 11110100将第二位取反,别的位保持不变。

运算符和优先级

  1. C语言中的单目运算符(除()、[])都是自右向左结合的,[]的优先级较高,可注意int *a[5]与int (*a)[]的不同。
  2. 条件运算符?:也是自右向左结合。
  3. “.”、“->”、“()”和“[]”4个运算符优先级最高。
  4. C语言没有指定同一运算符中多个操作数的计算顺序(除&&、||、?:和,),也没有指定函数中各参数的求值顺序,如:
    a[i] = i++;不同的编译器会给出不同的结果,不能确定a[i]中i的取值。
    printf(“%d %d\n”, ++n, power(2, n));不同的编译器会给出不同的结果,不能确定power(2, n)的调用是在++n之后还是之前。所以应当尽量避免使用此种含糊不清的语句。

例:比较*s++、(*s)++、*++s和++*s

*s++ 等价于*s,  s++;

(*s)++ 等价于*s += 1;

*++s等价于++s,*s;

++*s等价于++(*s)。

持续更新中。。。。。。