黑马程序员 -- C语言 指令 变量存储 二进制

来源:互联网 发布:才25岁,做程序员就很累 编辑:程序博客网 时间:2024/06/02 04:36

------- android培训、.Net培训、IOS培训碧空海的技术博客,期待与您交流!----------

第三讲 指令 变量存储  二进制 

A.Unix指令

1.编译:cc  -c  xxx.c(文件名显示第一个后,然后按tab键,可以快速输入)

编译成功:会生成一个.o文件

2.链接:cc  xxx.o就是把我们的.o文件和C中库函数合并在一起生成一个可执行文件a.out。

3.执行:./a.out

4.打开指定文档:open 需要打开的文件.c

5.转到另外文件夹:cd 路径名

6.显示当前文件夹下的内容:pwd回车

7.建立一个文件:touch 文件名.c

8.显示当前文件夹下的内容(更加详细的):ls -l

B.变量的交换


1.利用第三方变量来交换

int temp;

int b = 12;

int a = 14;

temp = a;

a = b;

b = temp;

2.不利用第三方变量

a = b - a;

b = b - a;

a = b + a;

c.变量的内存分析

1.内存以字节单位

1GB = 1024MB = 1024 x 1024KB =1024 x 1024 x1024B



int a = 10;

int b = 20;

int c;

//整形数据a和b声明并初始化,就晓得变量存储了什么值。而c声明了但是没有初始化,虽然分配了相应的地址但是没有值(也可以说c的值是不确定的)。


2.编译环境和类型所占字节数关系



D.break、continue、return的使用介绍

1.break

使用场合:

switch语句:退出整个switch语句

循环结构中:while、do while、for:退出整个循环语句

注意点:

仅仅对最近循环有效

2.continue

使用场合:

循环结构:while、do while、for:结束当前这次的循环体,进入下次循环。

注意点:

仅仅对最近循环有效

3.return

作用是:

退出当前函数。

返回一个具体的值给函数调用者。

如果没有明确返回值类型,默认返回整形。

void代表没有返回值。

就算明确了返回值,也可以没有任何返回值。

E.函数联合应用注意点

1.函数的定义放在.c文件中。函数声明放在.h文件中。

2.如果要使用某个.c文件中定义的函数,只需要#include这个.c文件所对应的.h文件。

3..h文件的作用就是被别人拷贝,编译和链接的时候不需要.h文件。

 

 

F.二进制

1.四种进制方式(逢几进制加1):十进制、二进制、八进制、十六进制。

十进制:12

二进制:1100

八进制:14

十六进制:C


2.代码中进制显示形式。

//默认情况下,就是十进制

int num1 = 10;

//二进制表示(0b或者0B开头)

int num2 = 0b1010;

//八进制(0开头)

int num3 = 012;

//十六进制(0x或者0X开头)

int num4 = 0x0A;

3.多种输出格式

printf("%d %o %x %u %c %s %f %e",a,s, d, f, g, h, j, k);


4.进制在内存中的存储细节

//一个int类型数据占据四个字节,一个字节占八位,共32位(bit)

//0000 0000 0000 0000 0000 0000 0000 1010

//内存寻找为 由大到小,优先分配大的地址给数据存储,并且每个地址优先分配给高位

int num = 12;

int num = 13;




5.二进制和十进制转换

0b11001 = 1 X 2的0次方 + 0 X 2的1次方 + 0 X 2的2次方,,,,1 X 2的4次方 = 25

//十进制转二进制

67 = 64 + 2 + 1 = 2的6次方 + 2的1次方 + 2的0次方

                            =0b1000000 + 0b10 + 0b1

                            =0b1000011

6.程序练习

输出整数在内存中的二进制形式

void printBinary(int n)

{

int bits = sizeof(n) * 8;

while(bits-- >= 0)

{

printf("%d", n >> bits& 1);

if(bits % 4 == 0)

{

printf(" ");

}

}

}

写一个函数,将小写字母转换成大写字母

void uper(char c)

{

//如果是小写字母则进入

if(c >= 'a' && c <= 'z')

{

return c - ('a' - 'A')

}else {

//不是小写字母则返回原来数据

return c;

}

}

 

 

 

 

 

 

 

 

 

0 0