DAY2 C基础

思维导图

 

一、第一个C语言程序

在Linux中,C语言源程序的拓展名.c,所以C程序的源文件名字应该是xxx.c

hello.c

【1】格式

#include <stdio.h>
int main(int argc,const char *argv[])
{
    printf("hello world\n");
    return 0;
}

#                  预处理标识符

include         是包含头文件的固定格式

<stdio.h>     是C语言标准库提供的头文件,下面的printf就包含在这个头文件里

<>                从C语言提供的标准库中找头文件

""                 从指定路径中找头文件,从当前路径中找头文件

int                main 函数的返回值

main            函数名,每一个C语言程序有且仅有一个main函数,main是程序的入口,也叫主函数

()                 函数的形参列表,int argc,const char *argv[] 主函数的外部参数

{}                 函数体

printf           标准输出函数

("\n")            printf括号内的双引号内的内容除了占位符和转义字符外都原样输出

;                   C语言中语句结束的标志

return           返回函数的返回值

0                  main函数的返回值

【2】注释

//    单行注释

/*

多行注释

*/

#if 0

条件注释

#endif


二、gcc编译器

c语言是编译型语言,需要编译才能执行,安全的。

【1】一步编译

gcc 文件名.c

默认生成一个名为a.out的可执行文件

执行可执行文件        ./a.out

gcc 文件名.c -o

可执行文件

gcc hello.c -o hello

编译hello.c文件生成名为hello的可执行文件,直接./hello,可以运行可执行文件

【2】分步编译  E S c --> i s o

预处理----编译----汇编---链接

每一步都可以使用.c文件直接执行

i)预处理  E  i

展开头文件,替换宏定义,删除注释,不会检查语法错误,生成编译文件。

gcc -E hello.c -o hello.i

ii)编译 S s

会检查语法错误,生成一个汇编文件

gcc -S hello.i -o hello.s

iii)汇编 c o

生成一个二进制文件

gcc -c hello.s -o hello.o

iv)链接

链接到程序需要的静态库/动态库,生成一个可执行文件,ELF类型的文件

gcc hello.o -o hello


三、计算机中的数据储存

数值型、非数值型

【1】计算机中的存储单位

1bit 是最小的存储单位

1Byte = 8bit 是内存分配的最小单位

1Kb = 1024Byte

1Mb = 1024Kb

1Gb = 1024Mb

1Tb = 1024Gb

【2】进制转换

二进制、十进制、八进制、十六进制······

计算机中数据的处理都是以二进制进行处理的

基数

2

8

10

16

数码

0 1

0-7

0-9

0-9 A-F

位权从右到左

2^0 2^1

8^0 8^1

10^0 10^1

16^0 16^1

前导符

0b

0

0x

i)十进制转二进制

  1. 十进制转任意进制,直接更换辗转相除法的除数。
  2. 使用2的次幂形式

例如:0111  1100,从后往前,0x2^0(后续以此类推)+0+4+8+16+32+64+0=124

ii)二进制转16进制

二进制转十六进制,每四位二进制数转一位十六进制数,四位二进制数依次是8421

例如:1111 0110   =F6

          15=F   6

iii)二进制转八进制

三位二进制数转一位八进制数                依次是421

一位八进制数转三位二进制数


四、基本数据类型

C语言中的数据类型分为:基本数据类型 构造数据类型 void(空类型)

【1】整形

1,2,3,4······

整形默认是int类型

数据类型

大小

占位符

int

4Byte

%d

short int

2Byte

%d

long int

64位操作系统占8Byte

32位操作系统占4Byte

%ld

long long int

8Byte

%ld

【2】浮点型

3.14····

浮点型数据默认是double类型

浮点型数据在计算机存储的是一个近似值。

浮点型数据的存储遵循IEEE754标准。

float最多可以表示小数点后6位

double最多可以表示小数点后15位

数据类型

大小

占位符

float 单精度浮点型

4Byte

%f

double 双精度浮点型

8Byte

%lf

【3】字符型

'a','b','c'·····

非数值型数据

在计算机中以ASCII进行存储

数据类型

大小

占位符

char

1Byte

%c输出字符

%d输出字符的ASCII码

sizeof(数据)   运算符:求数据的大小

需要记住的ASCII码

'\n':10

'a':97

'A':65

' ':32

'0':48


五、常量

在程序运行过程中,不能修改的量。

【1】整形常量

1,2,3,4····· %d

【2】浮点型常量

1.0,2.0,7.8·····

【3】字符型常量

'a','b'···· 被单引号包起来的单个字符

【4】字符串常量

"hello","a",····· %s 被双引号包起来的一个或多个字符

C语言中字符串结束标志,字符串的结尾有一个'\0'

【5】宏定义常量

在宏定义阶段,多使用预处理查看替换结果

无参宏定义
#define 宏名 宏体
在程序中所有遇到宏名的位置都被替换成宏体
#define N 10
在程序中所有遇到N的位置都被替换成10

宏定义是宏体简单替换宏名的过程

带参宏定义
#define 带参宏名(参数) 宏体
#define ADD(a,b) a+b

#include <stdio.h>
#define S hello    //hello不能作为字符串输出,因为没有""
#define STR "hello"  //hello可以作为字符串输出,因为有""
#define STR1(n) #n  //#把带参宏的参数转成字符串
int main(int argc, const char *argv[])
{
    printf("%s\n",STR);
    printf("%s\n",STR1(h));
    return 0;
}

在宏定义中使用#,将带参宏的参数转换成字符串
#define STR1(n) #n  //#把带参宏的参数转成字符串

练习

10/4 = 2 取整数部分

1、有如下宏定义

#define N 10

#define M N+2

#define NUM M*N+M/4

求NUM的结果

2、有如下宏定义

#define M 10

#define N M+7

#define NUM M+N*N/M+7

3、使用带参宏实现,两数相加和两数相减

 宏定义的注意事项

#include <stdio.h>
#define ADD(a,b) a+b //带参宏实现两数想加
#define P(a,b) 100  //带参宏但是宏体不是和参数相关的操作
#define SUB(a,b) a-b  //带参宏实现两数相减
#define S hello    //hello不能作为字符串输出,因为没有""
#define STR "hello"  //hello可以作为字符串输出,因为有""
#define STR1(n) #n  //#把带参宏的参数转成字符串
int main(int argc, const char *argv[])
{
    //带参宏仍然是宏名替换宏体的过程
    printf("%d\n",ADD(2,3));
    printf("%d\n",SUB(3,4));
 printf("%s\n",STR);
    printf("%s\n",STR1(h));
    return 0;
}

六、标准输入输出函数

函数原型

int printf(const char *format, ...);

printf    使用时,需要一个格式符和一个格式符对应类型的数据

printf("占位符/格式符",输出表象);         //有一个格式符就要有一个输出表象

printf("%d\n",10);                                 //10就是输出表象,%d就是10对应的格式符

printf("%c",'c');                                    //字符c时输出表象,%c是字符c对应的格式符

转义字符,就是有特殊意义的字符

\n:                换行 

\t:                制表符 一个tab键的大小4个空格

\b:                退格

\r:                回车 回退到行首进行输出

\\:                输出一个\,键盘上回车上面的\反斜杠,不是除号

格式符

%d:           整形数据的格式符

%-nd:        以n个数据宽度左对齐输出,不够就补空格

%nd:         以n个数据宽度右对齐输出,不够就补空格

%ld:          长整型数据的格式符

%f:            浮点型的格式符,printf默认输出小数点后6位

%.mf:        指定小数点后的输出位数

%lf:           双精度浮点型的格式符

%c:           字符型的格式符

%s:           字符串的格式符

%#x:         输出十六进制,并且带前导符0x,小写x,输出十六进制时对应的字母都是小写的

%#X:        输出十六进制,并且带前导符0X,大写x,输出十六进制时对应的字母都是大写的

%%:          输出一个%

 

作业:

1.整理思维导图,不需要大家整理详细的笔记,整理思维导图也是在理自己的思路。

 

2.写第一个C语言程序,并分步编译

 

 

 

 

 

3.整理宏定义的注意事项

#define ADD(a,b)  a+b                 //带参宏实现两数相加

#define P(a,b)  100                      //带参宏但是宏体不是和参数相关的操作

#define SUB(a,b)  a-b                 //带参宏实现两数相减

#define S  hello                           //hello不能作为字符串输出,因为没有""

#define STR  "hello"                   //hello可以作为字符串输出,因为有""

#define STR1(n)  #n                  //#把带参宏的参数转成字符串

宏定义的练习题重新做一遍

 

 

 

预习变量和scanf相关内容

进制转换

0111 1100转十进制        =124

 

93转二进制        =0101  1101   

 

153转十六进制        =99

 

1010 0001转八进制        =241

 

1011 1000转十六进制        =B8

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值