C++学习之路【1】:标C数据结构和算法
C语言数据类型
数据类型总览
数据类型功能:计算机将来分配内存大小
int - 计算机会分配4字节内存
数据类型 | 含义 | 数据范围 |
---|---|---|
char | 1字节整数 | -128~127 |
unsigned char | (无符号)1字节整数 | 0~255 |
short | 2字节整数 | -32768~32767 |
unsigned short | (无符号)2字节整数 | 0~65535 |
long | 4字节整数 | -2^31 ~ 2^31-1 |
unsigned long | (无符号)4字节整数 | 0~2^32-1 |
int | 4字节整数 | -2^31 ~ 2^31-1 |
unsigned int | (无符号)4字节整数 | 0~2^32-1 |
float | 4字节浮点数 | / |
double | 8字节浮点数(双精度) | / |
int和long类型在不同的机器上对应的字节数不同(笔试题中一般认为在32位系统)
8位系统 | 32位系统 | 64位系统 | |
---|---|---|---|
int | 2字节 | 4字节 | 4字节 |
long | 4字节 | 4字节 | 8字节 |
sizeof 关键字
利用sizeof关键字获取变量或者数据类型对应的内存空间大小
语法格式: sizeof(变量名/数据类型/表达式);
计算机内存的大小以字节为单位
int a = 1;
printf("%lu, %lu\n", sizeof(a), sizeof(int)); //%lu为sizeof占位符
在sizeof内赋值运算——无效化
int var = 100;
printf("sizeof(var) = %lu\n", sizeof(var)); //4
printf("%lu, %lu\n", sizeof(15), sizeof(5+5)); //4
sizeof(var = 520);
printf("var = %lu\n", var); //100
字符类型
数据类型:char / unsigned char
字符类型的名称是char
字符类型里包含256个不同的整数,每个整数对应一个字符(如:‘y’,‘%’等)
整数所表示的范围为:-128 ~ 127
这些数字和字符之间是可以相互替换的:每一个字符 — 对应着一个整数
存储‘a’ — 存储到内存 — 1字节 — 将字符对应的整数存起来
ASCII码表里列出所有整数和字符之间的对应关系:
‘a’ —— 97
‘A’ —— 65
‘0’ —— 48
#include<stdio.h>
int main(void){
char c = 'a';
printf("c = %c\n", c); //a
print("c = %hhd\n", c); //97
c = 98; //将数字98存储到变量c表示的存储区中
printf("c = %c\n", c); //b
print("c = %hhd\n", c); //98
c = c + 1; // 98+1=99; c = 99
printf("c = %c\n", c); //c
print("c = %hhd\n", c); //99
return 0;
}
字符类型–转义字符
字面值 | 含义 |
---|---|
‘\a’ | 响铃 |
‘\b’ | 退格 |
‘\t’ | 水平制表 |
‘\n’ | 换行 |
‘\v’ | 垂直制表 |
‘\f’ | 换页 |
‘\r’ | 回车 |
‘\‘’ | ‘ |
‘\“’ | “ |
‘\’ | \ |
‘%%’ | % |
#include<stdio.h>
int main(void){
printf("abcdef\n"); //换行
printf("abc\bdef\n"); //退格:abdef
printf("abc\tdef\n"); //水平制表:abc def(tab键效果)
printf("abc\rdef\n"); //回车:def(回到行首依次替换显示)
printf("\'abcdef\'\n"); //单引号:'abcdef'
printf("\"abcdef\"\n"); //双引号:"abcdef"
printf("abc\\def\n"); //斜杠:abc\def
printf("%%abcdef\n"); //百分号:%abcdef
return 0;
}
整数类型
整数类型包含:short 、long、int;unsigned short、unsigned long、unsigned int。
short a = 100;== short int a =100;
unsigned short a = 100;== unsigned short int a =100;
long a = 100;== long int a =100;
unsigned long a = 100;== unsigned long int a =100;
实际short和long是用来修饰int,平时可省略int,整数类型实际只有int一种。
浮点数类型
浮点数类型包含:float、double
程序里带小数点的数字默认是双精度浮点类型的 6.7
带小数点的数字后面加字符f表示数字是单精度浮点类型的 6.7f
占位符
类型 | 格式化标记符(占位符) | 大小 |
---|---|---|
char | %c/%hhd | 1字节 |
unsigned char | %c/%hhd | 1字节 |
int | %d | 4字节 |
unsigned int | %u | 4字节 |
short | %hd | 2字节(h = half) |
unsigned short | %hu | 2字节 |
long | %ld | 4/8字节(l = long) |
unsigned long | %lu | 4/8字节 |
float | %f/%g | 4字节 |
double | %lf/%lg | 8字节 |
复合数据类型
c语言里可以创建新的数据类型
这些新的数据类型叫做复合数据类型
符合数据类型需要先创建出来然后才能使用
scanf函数
scanf标准函数可以在程序运行的时候从键盘得到用户临时输入的数字 - scan format
为了使用这个标准函数需要包含stdio.h头文件
从键盘获取数字后需要存储到内存的存储区中
在scanf函数调用语句里必须使用【存储区的地址】表示存储区:&变量名/数组名/指针
在scanf函数调用语句里需要使用【占位符】表示存储区的类型
int a = 0;
scanf("%d", &a);
可以在一条scanf函数调用语句里获得多个数字,此时需要多个占位符和多个存储区(占位符的个数和存储区的个数要相等)
int a = 0, b = 0;
scanf("%d%d", &a, &b);