关键字
- C语言提供的有特殊含义的符号 也叫做"保留字" 一共32个
- 作用:表示或实现一些功能
- 注意:
全部是小写
标识符
- 在程序中自定义的一些符号和名称
- 作用:给函数、数据取名 方便区分
- 范围:26个字母、0-9、下划线“_”组成
- 注意:
1.不能以数字开头 2.不能与关键字重名 3.严格区分大小写
- 命名方式:驼峰命名法
数据
-
数据就是数值
-
用途:对数据进行操作使用时
-
1.静态数据 :断电还在
-
2.动态数据 :加载到内存中的,断电就没了
1byte=8bit 1KB=1024byte 1MB=1024KB 1GB=1024MB
常量
数据类型:
- 基本类型: 整型、浮点型、字符类型
- 构造类型: 数组、结构体、共用体
- 指针类型
- 空类型
float:单精度浮点型,精确度到小数点后7位
double:双精度浮点型,小数点后15位
printf用法
%d 整型
%c 字符型
%f 浮点型
%p 地址
&lu 配合sizeof使用 查看变量在内存中所占用的字节
printf("输出整型数据%d",int);
printf("输出浮点型数据%f",double);
printf("输出字符型数据%c",'c');
printf("输出变量在内存中的地址%p",&int);
printf("查看变量在内存中占用的字节数%lu",sizeof(int));
变量的作用域
- 变量的作用域只在对应的代码块中(相邻的两个大括号)
- 不同函数属于平行作用域
- 同一个作用域中不能出现同名的变量
- 不同作用域下变量名可以相同
- 变量只在自己的作用域内有效,出了作用域变量占用的内存被释放掉了
- 作用域可以无限嵌套
子作用域可以使用父作用域中的变量.父作用域无法使用子作用域中的变量.
int main(){
{
int a = 33;
printf("%d\n",a); // 这里a = 33
}
int a;
int b;
a = b = 33;
{
int a = 88;
a++;
printf("a = %d\n",a); //这里a = 89
{
a++;
printf("%d\n",a); //a = 90 这个作用域没有定义变量a 自动去上级作用域寻找变量a 并执行a++
}
}
b++;
printf("a=%d,b=%d\n",a,b);//a = 33 , b = 34 上一个作用域中的a 使用完就被释放掉了 所以这里的a还是main函数中的 33 .
}
变量的内存分析
- 内存占用的基本单位:byte(字节) 1byte = 8 bit
- 输出内存占用:
printf("int类型在内存中占用的字节数为:%lu",sizeof(int));
- 输出内存地址:
int num;
printf("num在内存中的地址:%p",&num);
- 从编号较大的内存区域向编号较小的内存区域分配
- 变量的地址是被分配的内存块中所有区域的最小值
scanf函数用法
- 在<stdio.h>库中
- 把用户按指定格式从键盘上输入的数据赋值给指定的变量
scanf("%d",&i);
- 需要赋值的变量前面加取址符
&
- 两个
%
之间的内容要按原样输入 - 不能用\n换行
- printf函数的参数是变量名,scanf函数的参数是变量的地址
算数运算符
-
+
,-
,*
,/
,%
- 用于数据的运算
- 精度 double > float > int
- 取余运算符
%
只能用于整数 - 运算时两个数据精度不一样,低精度数据会自动转换为高精度
- 同精度运算只能得到同精度的结果,需要提高精度需要强制类型转换
double d = 2/3;//赋值后d为0
解决办法:
double d = (double)2/3;//d = 0.666
double d = 2.0/3;//d = 0.666
赋值及自增自减运算
-
=
赋值运算符 -
++
--
自增自减运算
a++;//a = a + 1
a--;//a = a - 1
-
+=
-=
加减等于运算符
a += 1;// a = a + 1
a -= 1;// a = a - 1
- ++a a++的区别
a++;//a先参与运算 再自增
++a;//a先自增 然后把结果参与运算
sizeof用法
- 单目操作符
- 以字节形式给出其操作数或数据类型的存储大小
- 打印数据类型的字节时需要加( ),打印常量或变量的时候可以不用
printf("%lu\n",sizeof (int));//4
b = sizeof 'a';
网友评论