------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
第一部分:一些基础概念
1、C语言的源文件的扩展名是“.c” ,不区分大小写。
2、C语言程序是由一个或多个函数(程序段)构成的。
3、C程序的入口是一个叫main得函数。
4、C程序运行的步骤:编译、链接、运行。(以下全部命令需要在MAC的终端下运行)
1、编译:把代码翻译成电脑可以识别的语言0和1。
目前xcode使用的是clang编译器,clang编译器使用UNIX指令来编译。
clang编译器编译指令:“cc -c文件名.c”
编译后会生成一个“.o”文件 又叫“目标文件”
2、链接:把.o目标文件根系统自带的函数库合并在一起,生成一个可执行文件。
连接器来才做
指令:"cc 文件名.o"
3、运行:双击a.out文件或者终端中输入"./a.out"
注意,在哪个路径下编译就在那个路径下生成.o目标文件。比如在desktop路径下使用绝对路径编译其他目录下得.c文件,那么这个.o文件会生成在apple路径下。
命令“cc C程序.C” 这个命令会直接自动执行编译、链接的操作,省去了上面两个“先编译,后链接”的步骤。这个命令会把.o文件自动删除。
所有的c程序在上面链接的步骤中,链接后会都会生成a.out文件。想要在链接后生成的可执行文件的文件名是其他,可以用以下指令:
“cc 第一个c语言程序.o -o test”
执行以上指令后,会生成名称问test的文件,注意,这个文件名只有“test”没有.out运行时不能输入.out,因为我们给它改名叫test。
注意,编译只检测语法是否正确,如果没有Main函数这类的检测不出。在链接的时候会报错。
第二部分:学习中需要可能会用到的UNIX命令
下列列表是部分常用的unix命令
pwd | 查看当前的路径 |
cd 目录名 | 进入目录 |
ls | 列出当前目录下所有的文件 |
ls -l | 详细列出当前目录下的所有文件 |
mkdir 新建文件夹 | 新建文件夹 |
touch 新建文件 | 新建文件 |
open 文件/文件夹 | 打开文件或者文件夹 |
clear | 清屏 |
who | 获取用户名 |
/ | 代表根路径 |
./ | 代表当前路径 |
../ | 代表上一级路径 |
技巧:
1、打一个字符,然后敲tab如果当前路径下有这个字母开头的文件或文件夹
那么系统会用这个文件名填充,如果有多个以这个字母开头的文件,那么就需要
多打一些字母来与其他同字母头文件区分。
2、进入有空格的文件夹方法:
cd c" "study
cd c' 'study
cd c\ study
第三部分:计算机中的数据存储及变量
1、计算机中的数据大小
0、1代表一位bit
8个bit代表一个字节Byte
1Byte(字节) = 8bit
1KB =1024B
1MB =1024KB
...
2、一些常用基本类型在内存中占用的数据大小
| 16位编译器 | 32为编译器 | 64为编译器 |
char | 1个字节 | 1个字节 | 1个字节 |
int | 2个字节 | 4个字节 | 4个字节 |
long | 4个字节 | 8个字节 | 8个字节 |
short | 1个字节 | 2个字节 | 2个字节 |
float | 4个字节 | 4个字节 | 4个字节 |
double | 8个字节 | 8个字节 | 8个字节 |
3、交换两个变量的数据。
int a = 4;
int b = 5;
方法一:最长用得方法,使用第三个变量来配合交换。
int temp;
temp = a;
a = b;
b = temp;
方法二:不太常用的一种方法,也不是很好理解。
a = b - a;
b = b - a;
a = b + a;
4、数据在内存中的存储
a、内存寻址由大到小,优先分配内存地址比较大的字节给变量
b、便令越先定义,内存地址越大
c、变量未初始化时,它内部的值不确定,直接用来输出或运算会导致未知的错误。
第四部分:其他
1、自增自减运算符需要注意的地方
int d = 10++;
这句是错误的,因为等号右边相当于10 = 10 + 1,明显是错误的,11不可能赋值给10,所以++左右必须是变量,不能是常量。
2、sizeof运算符
用来计算常量、变量或数据类型占用内存的字节数
int a = sizeof(常量/变量/数据类型);
其中常量或变量可以省略括号,但是数据类型必须要保留括号!
3、关系运算法
C语言中,非0都是真,0是假。
关系运算符的优先级
1、== 和 != 优先级相同
2、<,>,<=,>=优先级相同
3、第2项的运算符优先级大于第1项的运算符
4、优先级的结合方向为从左往右
5、关系运算符优先级小于算术运算符
6、连续比较的 比较的是之前对比的结果返回值0或者1
比如2==3>5 结果为0
因为3>5返回0
2==0返回0
4、逻辑运算符
与&&
左右两边只要有一个不成立,就是0
如果左边不成立,右边就不会进行运算了,比如
a = 10;
b = 10;
c = a < 5 && ++b >= 11;
这里面a = 10, b = 10, c = 0;
因为左边a < 5,不成立,直接右边就不算了。
或||
左右两边只要有一个成立的,就是1
如果左边成立,右边的就不会运算了。
5、三目运算符
格式 | 条件?数值1:数值2 |
int a =10 > 5 ? 9 : 8;
如果10>5条件成立,返回9,如果不成立返回8.