黑马程序员——C语言学习笔记01 一部分容易忽视的概念

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------


第一部分:一些基础概念

1C语言的源文件的扩展名是“.c” ,不区分大小写。 

2C语言程序是由一个或多个函数(程序段)构成的。 

3C程序的入口是一个叫main得函数。 

4C程序运行的步骤:编译、链接、运行。(以下全部命令需要在MAC的终端下运行)

1、编译:把代码翻译成电脑可以识别的语言01

目前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、计算机中的数据大小

01代表一位bit

8bit代表一个字节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.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值