深入理解C++01

C++系列文章目录


深入理解C++01
深入理解C++02


本文声明

本文参考如下系列文章,仅供自学及网友参考


正文

c语言基础

在这里插入图片描述
程序与指令
指令:是对计算机进行程序控制的最小单位。
所有的指令的集合称为计算机的指令系统。
在这里插入图片描述
程序:是为完成一项特定任务而用某种语言编写的一组指令序列。
在这里插入图片描述
C语言特点
在这里插入图片描述
为什么学习C语言
在这里插入图片描述
C语言应用范围
在这里插入图片描述
C语言有32个关键字,9种控制语句,34种运算符
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
常量、变量笔记

程序编译链接原理
预处理:.c -> .i
gcc -E hello.c -o hello.i

编译:.i / .c -> .s
gcc -S hello.i -o hello.s

汇编:.s -> .o
gcc -c hello.s -o hello.o

链接:.o -> 可执行程序app
gcc hello.o -o app

gedit hello.c

转义字符
在这里插入图片描述
常量
常量就是计算机内存里面不变的数据
#define PI 3.14

变量
变量就是计算机内存里面需要并且经常改变的数据
1、下划线可以位于开头
int _abc = 4;
2、变量的命名区分大小写
int abc = 5;
int ABC = 6;
3、不能使用C语言关键字作为变量名
int if = 7;错误
int void = 8;错误
宏定义

# 不可出现在变量的命名中
$可以出现在变量的命名中
#include <stdio.h>
#define PI 3.14
int main()
{
	int a = 23;
	printf("%d\n",a);
    return 0;
}

内存如何存放数据或指令
在这里插入图片描述
大小端
小端存储法——高地址存高字节,低地址存低字节(高存高,低存低)
(intel/ARM)
0x表示十六进制

数值:0x12 34 56 78在小端存储器里如何存储

0x8003 0x12
0x8002 0x34
0x8001 0x56
0x8000 0x78

1 BYTE = 8bit

大端存储法——高地址存低字节,低地址存高字节(高存低,低存高)
(IBM大型机/网络字节序)
数值:0x12 34 56 78在小端存储器里如何存储

0x8003 0x78
0x8002 0x56
0x8001 0x34
0x8000 0x12
在这里插入图片描述
&a = 0x00 fb fc f4
在这里插入图片描述

变量命名规则
在这里插入图片描述
定义变量
在这里插入图片描述
变量为何一定要初始化
在这里插入图片描述

1、定义变量时没有指定其初始值,稍后使用时再赋值
int a,b,c;
a=1;
b=2;
c=3;

2、定义变量时直接指定初始值
int a = 1, b = 2, c = 3;

3、定义变量时没有指定其初始值,使用变量前也未进行赋值
	int a = 1;
	int b = 2;
	int c = 3;
	printf("%x\t%d\n",&a,a);
	printf("%x\t%d\n",&b,b);
	printf("%x\t%d\n",&c,c);

6d7e0678	1
6d7e0674	2
6d7e0670	3

定义常量
在这里插入图片描述

1、类1
const int a = 3;
int const a = 3;

2、类2
#define b = 4

练习
在这里插入图片描述

const int ox = 5;
int num;
num = ox;

3、从1加到10,每加一次,打印出结果数值
#include <stdio.h>

#define TIMES 10
int main()
{
	int result = 0;
	int i;
	for(i = 0; i < TIMES; i++) {
		result = result + i;
		printf("%d\n",result);
	}
    return 0;
}

4、实现2个变量的数据交换
	int a = 3;
	int b = 4;
	int tmp;
	printf("a = %d\tb = %d",a,b);
	tmp = a;
	a = b;
	b = tmp;
	printf("a = %d\tb = %d",a,b);

变量的数据类型

进制转换
10进制: 0,1,2,3,4,5,6,7,8,9,10
2进制: 0,1
8进制: 0,1,2,3,4,5,6,7
16进制:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F

百 十 个
1 2 3

1x10^2 + 2x10^1 + 3x10^0

0 1 0
0x2^2 + 1x2^1 + 0x2^0 = 2

1100 1010
0+2+0+8+64+128=202

二进制: 000 001 010 011 100 101 110 111 001000
十进制: 0 1 2 3 4 5 6 7 8
八进制: 0 1 2 3 4 5 6 7 10

二进制: 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
十进制: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
十六进制: 0 1 2 3 4 5 6 7 8 9 A B C D E F

二进制:1010 0001 1000
十六进制:A 1 8

十六进制:3D7
二进制: 0011 1101 0111

八进制:11
二进制:001 001

37
八进制开头:0
十六进制开头:0x
十进制开头:什么都不跟

八进制:0777
十六进制:0xffff8000

5进制:23 = 3x5^0 + 2x5^1 = 13

8 4 2 1

2^3 2^2 2^1 2^0

1000 0100 0010 0001

0111

十进制:89 对应的二进制 1011001
89 … 1
44 … 0
22 … 0
11 … 1
5 … 1
2 … 0
1 … 1

在这里插入图片描述
数据类型
在这里插入图片描述
数据类型与内存
在这里插入图片描述
sizeof运算符
在这里插入图片描述

	int a = 3;
	int num;
	num = sizeof(a);
	printf("num = %d",num);

num = 4

符号的作用
在这里插入图片描述
原码、反码 、补码

1 0000 0001 0000 0001 0000 0001 正数的反码,补码都等于原码
-1 1000 0001 1111 1110 1111 1111 负数的补码等于把反码加1

0 0000 0000 0000 0000 0000 0000
-0 1000 0000 1111 1111 0000 0000

如果(0 等于 -0)
执行aaaa;
否则
执行bbbb;
在这里插入图片描述
在这里插入图片描述

基本数据类型

char  b = 1;              => (-128~127)
unsigned char a = 129;    => (0~255)
  s
  0000  0000
  1000  0001
  1111  1111
int          
unsigned int  ->  (0~2^32-1)

在这里插入图片描述
整型常量
在这里插入图片描述
整型变量
在这里插入图片描述
浮点型
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
字符常量
在这里插入图片描述
字符串常量
在这里插入图片描述
字符型数据
在这里插入图片描述
字符型变量
在这里插入图片描述

	char ch = 'A';
	printf("ch = %c",ch);
	ch = ch + 32;
	printf("ch = %c",ch);

数据类型的极限
在这里插入图片描述
类型转换
在这里插入图片描述
linux命令

开启一个终端
CTR+ALT+t

关闭一个终端
ALT+f4        exit

shell:单词语义贝壳,计算机语义命令解释器。
shell提示符
#:一般表示你是超级用户,root
$:一般表示你是普通用户

清除屏幕
clear  快捷键CTR+l

察看当前目录下有哪些文件
ls
察看当前目录  
pwd

自动补齐路径和命令
tab键

进入目录
cd  目录路径(绝对路径,相对路径)
创建目录
mkdir  		目录名
rmdir  		删除空目录
rm -r  		删除非空目录
rm  		删除一个文件


回家命令
cd

根目录讲解
/   称之为根目录

切换到字符控制台
CTR+ALT+SHIFT+(f1-f6)
切换回图形界面
ALT+f7

在命令行下翻屏
shift+pgup
shift+pgdn

进程管理命令
察看进程信息
ps aux
kill -9  进程号
kill -SIGKILL  进程号
终止当前shell里面的前台进程
ctr+c	

根据文件名查找文件
find 路径  -name  ”文件名“

根据文件内容查找文件
grep "内容"  路径  -R(递归查找的意思)

tar.gz打包命令
tar zcvf test.tar.gz  test

tar.gz解包命令
tar zxvf test.tar.gz
tar zxvf test.tar.gz  -C 指定目录

tar打包命令
tar cvf test.tar  test

tar解包命令
tar xvf test.tar
tar xvf test.tar  -C 指定目录

bz2包打包命令
tar jcvf test.bz2  test
bz2包解包命令
tar jxvf test.bz2
tar jxvf test.bz2  -C 指定目录

操作数、运算符和表达式
在这里插入图片描述
操作符分类
在这里插入图片描述
算数表达式
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

   int num,i,j;
   scanf("%d",&num);
   i = num/10; //十位数
   j = num%10; //个位数
   num = 10*j + i;
   printf("%d",num);

自增自减运算符
在这里插入图片描述
在这里插入图片描述
赋值表达式
在这里插入图片描述
表达式规则
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
逗号运算符与表达式
在这里插入图片描述
关系运算符与表达式
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
逻辑 && 、||、!
在这里插入图片描述
逻辑运算表达式
在这里插入图片描述
在这里插入图片描述
短路表达式
在这里插入图片描述
条件运算符
在这里插入图片描述
在这里插入图片描述
左值与程序实体
在这里插入图片描述
在这里插入图片描述
运算符的优先级
在这里插入图片描述
在这里插入图片描述
数据输入与输出函数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
格式说明
在这里插入图片描述
格式字符
在这里插入图片描述
%d格式字符
在这里插入图片描述
o x u格式符
在这里插入图片描述
%u十进制形式输unsigned型数据
在这里插入图片描述
c格式符
在这里插入图片描述
s格式符
在这里插入图片描述
f格式符
在这里插入图片描述
e格式符
在这里插入图片描述
g格式符
在这里插入图片描述
printf函数说明
在这里插入图片描述
字符输出putchar和字符串输出puts
在这里插入图片描述
putchar函数(字符输出函数)
在这里插入图片描述
puts函数(字符串输出函数
在这里插入图片描述
scanf函数详解
在这里插入图片描述
格式输入函数scanf
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
scanf函数工作原理
在这里插入图片描述
scanf函数多数据输入分隔
在这里插入图片描述
scanf函数格式字符
在这里插入图片描述
scanf函数使用说明
在这里插入图片描述
scanf函数使用注意
在这里插入图片描述
字符输入函数getchar
在这里插入图片描述
在这里插入图片描述
笔记

1 宏替换,完全展开替换,注意带来副作用
#include<stdio.h>
#define 打印语句 printf("hello");
void main(void)
{
	if(1)
		打印语句;
	else
		...;
}

void main(void)
{
	if(1)
		printf("hello");
	else
		...;
}

2 程序编译衔接的过程
.c 经过预处理,编译,汇编,衔接,最终生成可执行程序.exe/ELF

3 常量,定义以后其值不能改变的数
宏定义一个常量
#define PI 3.14
c语言关键字const
const int TIEMS = 10;
例题:
const int b;
b = 10;

4 变量,拥有固定大小的存储空间,里面存放的数值可以修改

5 标识符命令规则

6 变量的基本类型
char
short
Int
Long
Long long
float
double

隐式类型转换规则
小字节向大字节类型转换,低级别向高级别类型

例题:
double result;
result = 3*5-2+‘a’*1.1

强制类型转换
char ch = ‘a’;
int b = 3+long)ch;

什么是表达式?
3
3+5
b-a
(int)(3*4-5+6/7+2.3)

精度丢失
void main(void)
{
	int num = 0x12345678;
	char ch;
	ch = num;
	printf("%x", ch);
	printf("%d", num);
}

笔试题:测试当前电脑是大端存储还是小端存储数据

例题:
char b = 3-> 0000 0011
short c = b; -> 0000 0000 0000 0011
char b = -3; -> 1000 0011 -> 1111 1100 -> 1111 1101
short c = b; -> 1111 1111 1111 1101

习题:
1 65543转换为2进制,8进制,16进制

输入:1234
输出:4321

1234%10 = 4
1234/10 = 123
123%10 = 3
123/10 = 12
12%10 = 2
12/10 = 1
1%10 = 1
1/10 = 0

在这里插入图片描述

指针
在这里插入图片描述
在这里插入图片描述
int型指针
在这里插入图片描述
char型指针
在这里插入图片描述
值传递
在这里插入图片描述
地址传递
在这里插入图片描述
char指针
在这里插入图片描述

sizeof(s) = 4
strlen(s) = 5
str = hel

字符串 字符串数组

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值