函数声明时可以声明为
void sum (int ,int)
C语言程序调用函数时给的值与参数的类型不匹配是C语言传统上最大的漏洞;
编译器总是悄悄替你把类型转换好,但是这很可能不是你所期望的。
后续的语言,C++和Java在这方面很严格。
void f (void);
void f();
含义不同:第一个指明了没有参数,第二个表示函数的参数表未知;
所以,有参数要写明确,没有要写void
C语言不允许函数嵌套定义。
sizeof( )是一个运算符,给出的是某个类型或变量在内存中所占字节数,依赖编译器。
是静态运算符,它的结果在编译时刻就决定了。
不要在sizeof的括号里做运算,这些运算不会做的。
来源:http://blog.csdn.net/lj695242104/article/details/16446341
要把一个数组的所有元素交给另一个数组,必须采用遍历。
数组作为函数参数时,往往必须用另一个参数来传人数组的大小,不能在[]中给出数组的大小,不能再利用sizeof来计算数组的元素个数。
指针:
函数参数表中的数组参数实际上是指针。
取地址符&
数组参数:
以下四种函数的原型是等价的;
int sum(int *ar, int n);
int sum(int ar[], int );
int sum(int ar[],int n);
int sum(int [], int);
数组变量本身表达地址;
数组的单元表达的是变量,需要用&取地址;
数组变量是const的指针,所以不能被赋值;
数组变量是特殊的指针。
字符:
char 1字节(8比特)
short:2字节
int :取决于编译器(CPU),通常的意义是“1个字”
long :取决于编译器(CPU),通常的意义是“1个字”
long long :8字节
字符类型:
char是一种整数,也是一种特殊的类型:字符。
这是因为:
用单引号表示的字符字面量:’a’, ‘1’
”也是一个字符
printf和scanf里用%o来输入输出字符。
浮点类型就是生活中习以为常的带小数点的数,但是在计算机内部,浮点数的处理是很特别的。整数是以二进制的形式存在于计算机内部的,而浮点数不是。浮点数是编码的数字,因此两个浮点数不能在计算机内部直接以二进制的方式进行计算,通常需要专门的硬件支持。
浮点数的计算机内部表达形式造成了浮点数的很多有意思的现象。
浮点数存在误差。无法避免的,除非不使用这种类型
浮点数可以表示正负无穷大,但整数不行,编译无法通过
两个浮点数直接判断大小是可能错误的,
应该绝对值足够小的时候表明相等
整数永远是精确的,用整数去运算
逻辑类型
C语言本没有逻辑类型,在内部计算中使用整数表达关系运算和逻辑运算的结果,0表示false,而非0的值表示true。
在C99中,也没有固有的逻辑类型,但是通过一个头文件定义了可以直接使用的true和false这两个值,以及bool这个类型。
逻辑运算则是C语言固有的成分。
逻辑运算符的短路问题;
自动类型转换;
强制类型转换;