---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
C语言基础
一 函数
任何一个C语言程序都是由一个或者多个程序段(小程序)构成的,每个程序段都有自己的功能,我们一般称这些程序段为“函数”。所以,你可以说C语言程序是由函数构成的。
1.什么情况下定义函数:添加一个常用的新功能
2.函数的定义格式
返回值类型 函数名(形式参数列表)
{
函数体
}
3.定义函数的步骤
1> 起一个有意义的函数名
1. 2>函数是干啥的,里面包含了什么代码,明确函数的参数和返回值
例如求平均值
int average(int num1, int num2)
{
return (num1 + num2)/2;
}
Return 返回值的作用;
l void可以省略return
l 可以多次使用return
l return后面不能有其他语句
注意:如果没有写return的类型默认为int ,写了返回值可以不返回;
参数注意:
1.形式参数:定义函数时函数名后面中的参数,简称形参
2.实际参数:调用函数式传入的具体数据,简称实参
3.实参个数必须等于形参个数
4.函数体内部不能定义和形参一样的变量
5.如果是基本数据类型作为函数形参,纯粹是值传递,修改函数内部形参的值,并不会影响外面实参的值
6.一个函数可以没有形参,也可以有无限多个形参
int sum(int num1, int num2)
{
return num1 + num2;
// num1 、num2称为函数的形式参数,简称实参
}
int main()
{
int a = 100;
int b = 27;
// a、b称为函数的实际参数,简称实参
int c = sum(a, b); printf("c=%d\n", c);
}
默认情况下,C语言不允许两个函数的名称一样。(即使参数不同也不行)
1.默认情况下,不允许有函数的名称一样
2.函数不能嵌套定义
3.函数不能重复定义,但是可以重复声明
4.如果有函数的声明,没有函数的定义
1> 编译可以通过,因为编译器只会检测语法合不合理,并不会检测函数有没有定义
2> 链接报错,因为链接的时候会检测函数是否定义
由于程序的编写需要大量的功能,所以如果程序的所有内容都写在一个文件的话,会造成函数过多,不利于阅读、调试,尤其一个程序往往是有一个团队合作而成,不利于分工,因此需要将各个函数的声明放入单独的一个文件,就是 .h文件和.c文件的分工。 .h文件用来存放函数的声明,.c文件用来存放函数,必须文件必须同名,如果其他文件需要使用该函数的功能,只需要在程序开头写上#include “xxx.h”,如果是c函数库中的,要用<>号,比如使用print函数需导入 #include<stdio.h>
二进制
不同进制不同的使用方法
#include <stdio.h>
int main()
{
// 默认情况下,就是十进制
int number = 12;
// 二进制(0b或者0B开头) 1> 特点:只有0和1,逢2进1
int number2 = 0B1100;
// 八进制(0开头)1> 特点:0~7,逢八进一
int number3 = 014;
// 十六进制(0x或者0X开头)1> 特点:0~F,逢十六进一
int number4 = 0xc;
// %d以10进制整数的形式输出一个数值
printf("%x\n", number);
return 0;
}
Printf 以不同的进制形式进行输出
变量在内存中的存储
内存由大到小寻址
只存储二进制形式
每个变量都有地址:第一个字节的地址就是变量的地址
查看内存地址的两种方式:%x和%p
三 类型说明符
1. short和long
不同类型所占用的存储空间
2. signed和unsigned
1> 首先要明确的:signed int等价于signed,unsigned int等价于unsigned
2> signed和unsigned的区别就是它们的最高位是否要当做符号位,并不会像short和long那样改变数据的长度,即所占的字节数。
signed:表示有符号,也就是说最高位要当做符号位,所以包括正数、负数和0。其实int的最高位本来就是符号位,已经包括了正负数和0了,因此signed和int是一样的,signed等价于signed int,也等价于int。signed的取值范围是-231 ~ 231 - 1
unsigned:表示无符号,也就是说最高位并不当做符号位,所 以不包括负数。在64bit编译器环境下面,int占用4个字节(32bit),因此unsigned的取值范围是:00000000 0000 0000 0000 0000 0000 0000 ~ 1111 1111 1111 1111 1111 1111 1111 1111,也就是0 ~ 232 –1
四、 位运算
1. &按位与
只有对应的两个二进位均为1时,结果位才为1,否则为0。
比如
10111011
10101101
---------
10101001
2. |按位或
1> 功能
只要对应的二个二进位有一个为1时,结果位就为1,否则为0。
2> 举例: 比如9|5,其实就是1001|101=1101,因此9|5=13
3. ^按位异或
1> 功能
当对应的二进位相异(不相同)时,结果为1,否则为0。
2> 举例: 比如9^5,其实就是1001^101=1100,因此9^5=12
3> 规律
相同整数相^的结果是0。比如5^5=0
多个整数相^的结果跟顺序无关。比如5^6^7=5^7^6
因此得出结论:a^b^a= b
4. ~取反
按位取反 ~
~0000 0000 0000 0000 0000 0000 0000 1001 变成
1111 1111 1111 1111 1111 1111 1111 0110
5 左移 << 右移 >> 相当于:9<<n-> 9 * 2的n次方8>>n -> 8/2的n次方
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------