#include <stdio.h> int main() { // 整型常量 10; // 实型常量(小数) // 单精度float/双精度 // 注意默认状况下都是双精度的实型常量也就是全部小数都是默认double 10.1; // 双精度double 88.8; // 双精度double 5.2f; // 单精度float // 字符型常量,用单引号扩起来的就是字符型常量 // 注意:字符型常量只能写一个字符,写多个会报错除了\r,\n,\t,\f,\\,\',\'',\ddd 'a'; // 字符型常量 'ab'; // 错误 '1'; ‘12’; ‘1’; // 这个是么? // 字符串型常量,用双引号引发来的就是字符串常量 // 注意:不管你用双引号l括起来几个字符,只要是使用双引号扩起来就是字符串常量 "abc"; "a" return 0; }
什么是变量函数
表示的数据能够常常被修改,当一个数据的值不肯定,或者常常被修改的时候就应该用变量来表示优化
好比说:游戏积分,页码spa
如何定义变量code
申请一块存储空间,也就是定义一个变量blog
定义变量的格式,数据类型,变量名称游戏
定义一个基本数据类型的变量(int,float,double,char)内存
int number; // 定义一个n名称叫作number的变量,会在内存空间中开辟一块给number,用于存储数据 int value; // 再开辟一块空间给value
作用域
连续定义变量字符串
int number1,number2; // 连续开辟两个存储空间分别给number1,number2
如何往变量对应的存储空间中存储数据呢?get
注意:变量中不能随便的存储数据,只能存储与之对应的数据,也就是说以前申请内存空间为int类型,那就只能存储int类型,若是存储float,double会出一些问题
int number; number = 2; // 这时候会把数据2这个值放在申请好了的number的存储空间中
变量的第一次赋值称之为初始化
如何使用变量
要使用占位符
int number = 10; printf("%i",number);
变量初始化的两种方式
// 初始化的两种方式 // 1,先定义再初始化赋值 int value1; value1 = 10; // 2,定义的同时初始化 int value2 = 10;
彻底初始化
// 彻底初始化 int value3, value4; value3 = value4 = 10; // 把10赋值给value4,再把value4的值赋值给value3 int value3,value4; value4 = 10; value3 = value4;
部分初始化
// 部分初始化 int value5,value6 = 10; // 开辟两个存储空间value5,value6,将10的值赋值给value6,可是value5并无给赋值
如何修改变量的值
int number = 10; // 定义并初始化一个变量number,将10的值赋值给number number = 20; // 将20的值赋值给变量number,此时number的内存空间没有是10,只有20了。它只能存一个值
变量之间的值传递
int number = 10; // 定义并初始化一个变量number,将10的值赋值给number int number1 = number; // 将number的值赋值给number1,此时会先去找number这个变量的内存地址,找到内存地址取出存的值,将这个值赋值给number1
连续赋值
int a,b,c; // 定义并初始化三个变量a,b,c a = b = c = 10; // 将10的值赋值给c,再将c的值赋值给b,再将b的值赋值给a
如何查看变量的值(简单用法)
// int类型 int number = 10; printf("number的值是%i",number) //使用%i // float类型 float FloatNumber = 20.0f; // float类型要加上f标示,默认是double类型的 printf("FloatNumber的值是%f",FloatNumber) // 使用%f // double类型 double DoubleNumber = 30.01234567890; printf("DoubleNumber的值是%lf",DoubleNumber) //使用lf,longfloat printf("DoubleNumber的值是%.10lf",DoubleNumber) // printf函数默认强制输出小数点后6位,想要输出双精度的须要指定你要输出小数点后面几位 // char类型 char CharNumber = 'a'; printf("CharNumber的值是%c",CharNumber) // 使用%c
c语言中全部变量都有本身的做用域,根据做用域的不一样分为局部变量和全局变量。
int main(){ a = 10; int a ; // 变量的做用域是从定义的哪一行开始,到大括号结束,报错 return 0; // return 表明函数的结束,只要执行到这里就表明这个函数结束了 }
例如:把变量放在rerurn后面执行--报错
int main(){ int number; number = 10; return 0 ; printf("%i",number); // 此时number在return的后面,number的做用域也就消失了 }
例如:不一样函数之间的变量做用域是不同的,不能相互调用的
int call(){ int number; return 0; } int main(){ number = 10; printf("%i",number); // 此时在main函数中调用call函数中的变量number,会报错。number在call函数中,他的做用域之存在于call的函数内存空间中。 return 0; }
例如:在同一函数中,函数的嵌套时,内层函数能够使用外层函数的变量,外层函数不能使用内层函数的变量
int main(){ int number; { number = 10; printf("%i",number);// 此时能够正常打印,外层中number时遇到她所在的内存空间,他和{printf("%i",number)}是同一级别的 } return 0; }
int main(){ { int number; number = 10; } printf("%i",number); // 此时是错误的,number的变量存储在{}中,并不在main()函数中 return 0; }
例如:变量查找的顺序(第一种)
int main(){ int number; { int number = 20; printf("%i",number); // 20,变量名称相同,先查找本内存空间的变量number也就是20 } printf("%i",number); // 0,由于在此内存空间中有number的变量,可是并无初始化因此是0,也多是其余的数字,随机的 return 0; }
内存和字节的关系
一个变量所占用的内存空间,不只跟变量的类型有关系,还跟编译环境有关系
同一个变量类型在不一样的编译环境下所占用的存储空间是不同的-这就是咱们要定义变量类型的缘由(优化存储空间)
内存由大到小寻址
// 内存空间分析 int main(){ // 内存寻址从大到小,按照这种规则那么先定义的变量内存地址确定比后定义的要大 int number = 0; int value = 0; printf("number的内存地址是%p\n",&number); // 使用%p占位符,&符号就能够获取变量的内存地址,打印出来的是16进制 //a, b, c, d, e, f //10, 11, 12, 13, 14, 15 printf("value的内存地址是%p\n",&value); return 0; }
变量存储单元的第一个字节地址就是该变量的地址
任何变量在存储空间都是二进制存在的
类型 | 16位编译器 | 32位编译器 | 64位编译器 |
char | 1 | 1 | 1 |
int | 2 | 4 | 4 |
float | 4 | 4 | 4 |
double | 8 | 8 | 8 |
short | 2 | 2 | 2 |
long | 4 | 4 | 8 |
long long | 8 | 8 | 8 |
void * | 2 | 4 | 8 |