现在的位置: 首页 > 综合 > 正文

C语言学习笔记(一)

2017年12月15日 ⁄ 综合 ⁄ 共 1371字 ⁄ 字号 评论关闭

1、位操作符:对两个操作数按位操作。

 

!和~是不同的。

 

2、布尔表达式:一旦得出结果就停止计算。

 

对experssion1 && experssion2和experssion3 || experssion4来说,如果exp1为0则exp2不会被计算。同样,如果exp3为1,exp4也不会被计算。

 

3、赋值表达式:返回值就是操作符左边的表达式的值。

 

printf("%d/n",x=999)的打印结果是999

 

4、printf()的返回值:打印的字符数/-1

 

5、定义和声明

只有当声明一个变量的同时为其分配一个空间才能称为“定义”。例:

定义:int i;

声明:extern int i;

 

6、static变量

 

static分为两种情况:(1)定义一个外部变量时声明为static变量,这种情况下,意味着此变量对于这个源代码文件之外的代码是隐形的(不可访问);(2)在函数中定义内部变量时声明为static变量,此时,意味着这个变量在函数调用返回后依然存在(但无法被其他函数访问),当程序再次进入同一个函数时,这个变量依然保持着上一次函数返回时的值。

 

7、变量的初始化

局部变量可以用类型相符的任意表达式来初始化,而全局变量只能用常量表达式(Constant Expression)初始化

 

8、void *

void *是通用类型指针,任何类型的指针都可以转化为void *类型,并且在将它转换回原来的类型时不会丢失信息。

 

9、复杂的指针声明(from K&R)

char **argv                                     //argv:pointer to pointer to char
int (*daytab)[13]                               //daytab:pointer to array[13] of int
int *daytab[13]                                 //daytab:array[13] of pointer to int
void *comp()                                    //comp:function returning pointer to void
void (*comp)()                                  //comp:pointer to function returning void
char (*(*x())[])()                              //x:function returning pointer to array[] of pointer to function returning char
char (*(*x[3])())[5]                            //x:array[3] of pointer to function returning pointer to array[5] of char

 

/* 谁要是写出最后两行这种代码大概会被读代码的人活活拍死吧…… */

 

10、typedef

typedef expression(tp);

tp var1;

可以理解为这样一个过程:将var1代入expression(tp)中所有tp的位置,就是tp var1所表达的含义。

 

 

抱歉!评论已关闭.