数据分为动态和静态,动态数据存储在内存中,静态数据存储在硬盘中
数据类型分为整型、实型(小数)、字符型
常量
常量包含整型常量、实型常量、字符型常量、字符串常量
-
整型常量就是整常数
- 二进制
- 八进制
- 十进制
- 十六进制
-
实型常量
- 单精度(float)
- 双精度(double)
-
字符型常量
- 普通字符
- 转义字符
-
字符串常量
- 将一个或者多个字符用双引号("")括起来,这样构成的就是字符串常量
- 注意字符串常量和字符型常量是不一样的
#include <stdio.h>
int main(int argc, const char * argv[]) {
// 整型常量
10;
// 实型常量(小数)
// 单精度float / 双精度double
// 注意:默认情况下编写的小数都是双精度的实型常量(double)
10.1; // 双精度double
88.88; // 双精度double
5.2f; // 单精度float(使用f结尾的小数,表示是单精度)
// 字符型常量,用单引号括起来的就是字符型常量
// 注意:字符型常量的单引号中只能写一个字符,如果写多个会报错
'a'; // 字符型常量
'ab'; // 错误写法
'1'; // 字符型常量
'12'; // 错误写法
'李'; // 错误写法,一个汉字占3个字节
// 特殊的字符常量,在C语言中,系统给某些字符的组合定义了特殊的函数,这些字符的组合可以当做单个字符来使用
'\t';
'\n';
'\\';
// 字符串型常量,用双引号括起来的就是字符串型常量
// 注意:只要使用双引号括起来的字符,都是字符串常量
"abc";
"a";
"1";
return 0;
}
变量
当一个数据需要经常改变或者不确定时,就应该使用变量进行表示
定义变量的格式:数据类型 变量名称;
// 定义一个基本数据类型的变量
int number; // 定义一个名称叫做 number 的整型变量
// 连续定义,如果多个变量都是相同类型的,那么可以采取连续定义
int age, sex;
注意: 变量中不能随便存储数据,只能存储与之对应的数据
int number; // 初始化变量
number = 10; // 会将等号右边的数据放到等号左边的变量对应的存储空间中
使用变量
int number = 10;
// 占位符号,%号是占位符的起始符号
printf("number --> %i\n", number);
float floatValue = 10.1f;
printf("floatValue --> %f\n", floatValue);
char charValue = 'a';
printf("floatValue --> %c \n", charValue);
变量作用域
变量的作用域从定义的那一行开始,一直到函数结束为止
C语言中所有变量都有自己的作用域,申明变量的类型不同,其作用域不同。C语言中的变量,按照作用域的范围可分为两种,即局部变量和全局变量
-
局部变量
局部变量也称为内部变量,局部变量是在函数内定义说明的。其作用域仅限于函数内(代码块),离开该函数后再使用这种变量是非法的。 -
全局变量
全局变量也称为外部变量,它是在函数外部定义的变量
#include <stdio.h>
// 定义全局变量,在函数外的变量称之为全局变量,全局变量可以在其它函数中使用
int age;
int main(int argc, const char * argv[]) {
age = 10; // 使用全局变量
printf("全局变量 age --> %i\n", age);
// 定义局部变量,在函数内部定义得变量称之为局部变量,局部变量只能在函数中使用
int age = 50;
printf("局部变量 age --> %i\n", age);
{
// 此处可以使用外层函数中定义的局部变量 age
printf("局部变量 age --> %i\n", age);
}
return 0;
}
查看变量内存地址
#include <stdio.h>
int main(int argc, const char * argv[]) {
// 使用&符号加变量名称可以获取到变量对应的内存地址,使用 %p 可以输出变量对应的内存地址进行格式化输出
int age = 10;
printf("&age --> %p\n", &age); // 0x7ffeefbff52c
age = 20;
printf("&age --> %p\n", &age); // 0x7ffeefbff52c
return 0;
}