C++系列文章目录
本文声明
本文参考如下系列文章,仅供自学及网友参考
正文
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
字符串 字符串数组