该系列是编程语言系列的。本篇作为C语言的开篇之作。由于C与C++在很多特性上相同,因此C++在C的基础上增加一篇关于额外的功能的。该系列主要是编程语言的基础知识,属于较为简单的范畴。
本篇的内容是关于数据类型的,也是每一门编程语言中最为基础的一个部分。
符号常量与变量的区别
-
变量需要内存来进行存储
-
符号常量不需要
- 直接在程序中数字表示
- 进行宏定义,用有含义的符号用以代表——在编译的时候会根据宏定义进行等价替换
变量
先声明(定义)后使用
常变量
- 关键字:
const
- 如:
const int test=2
- 值不变的变量
命名规则
- 第一个字符必须是字母或者下划线
- 只能由字母、数字、下划线组成
数据类型
- 整数类型
- 基本整型——
int
- 通常是32位,采用整数的补码形式存储
- 短整型——
short int
、short
- 通常是16位,采用整数的补码形式存储
- 长整型——
long int
、long
- 16位系统——long32位、int16位
- 32位系统——long32位、int32位(目前枢机大多数是按照32位来的)
- 64位系统——long64位、int32位
- 双长整型——
long long int
、long long
- 通常是8个字节,64位
- C99新增的数据类型
- 无符号类型——
unsigned XXX
- 代表无符号数,最大值扩大一倍,没有复数
- 基本整型——
- 字符类型
- 字符变量——
char
- 赋值为负时,不代表一个字符,而是代表一个负数
- 字符变量——
- 浮点数类型
- 单精度浮点数——
float
- 32位,四个字节
- 双精度浮点数——
double
- 64位,八个字节
- 长双精度浮点数——
long double
- 8字节或16字节——根据编译系统
- 一个字符(
char
) - 本质:当输入流出现不是该形式的东西时,停止该形式的输入,并判断是否是下个形式的输入,如不是,则继续遍历输入流
- 单精度浮点数——
- 字符串输入输出
puts
——字符串输出gets
——字符串输入
数组
-
一维数组
- 声明、初始化:
- 如:
int test[3] = {1,2,3};
- 如:
int test[] = {1,2,3};
- 如:
int test[5] = {1,2,3}; // {1,2,3,0,0}
- 如:
- 声明、初始化:
-
二维数组
- 声明
- 初始化
- 分行初始化:
int a[2][3] = {{1,2,3},{1,2,3}};
- 全部初始化:
int a[2][3] = {1,2,3,1,2,3};
- 个别初始化:
int a[2][3] = {{1}}; // 除第一个初始化为1,其余元素初始化为0
- 全部初始化为0:
int[2][3] = {};
- 分行初始化:
-
字符数组
- 声明:同上
- 初始化:缺省的初始化为’\0’
- 初始化为字符串:
int test[] = "test"
- 初始化为字符串:
- 字符串
- 字符数组存储字符串:在末尾自动加上’\0’
- 输入:
%s+数组名
scanf
:多个字符串用空格隔开gets
:只能输入一个字符串
- 输出:
printf
puts
:只能输出一个字符串
- 相关函数
Strcat(str1,str2); //将str1和str2连接起来,并存在str1
Strcpy(str1,str2); //将str2复制到str1中
strncpy(str1,str2,n); //将str2中前面n个字符复制到str1
strcmp(str1,str2); //str1和str2进行比较,从头开始按照ASCII的大小进行比较
strlen(str1); //返回字符串的长度
strlwr(str1); //将str1的大写字母换成小写字母
strupr(str1); //将str1的小写字母换成大写字母