C for ios ---- 变量的初始化和引用、作用域、内存分析

变量初始化和引用

1.如何使用变量?

  • 赋值就是往变量里面存点东西,就是赋值。赋值语句后带个分号;
~~ int value;
~~ value = 998; // 赋值
  • 注意:这里的等号=,并不是数学中的“相等”,而是C语言中的赋值运算符,作用是将右边的常量998赋值给左边的变量value
  • 赋值的时候,= 号的左侧必须是变量 (10=b,错)
  • (2)规范:习惯将 = 的两侧 各加上一个 空格

2.变量的初始化

  • 变量第一次赋值,可以称为“初始化”
  • 初始化的两种形式
    • 先定义,后初始化
~~ int value;
~~ value = 998; // 初始化
  • 定义的同时进行初始化
~~ int a = 10; // 完全初始化
~~ int a, b=10; //部分初始化
~~ int a=4, b=2;
  • 其它表现形式
    • 批量初始化

      int a,b,c;
      a = b =c =0;
  • 思考: 不初始化里面存储什么?
    “`
    int a; //不会报错,a里面存的内容:
    1)随机数
    2)上次程序分配的存储空间,存数一些 内容,“垃圾”
    3)系统正在用的一些数据

## 3.如何修改变量值?
- 可以修改变量的值,多次赋值。每次赋值都会覆盖原来的值

~~ int i = 10;
~~ i = 20; // 修改变量值
~~
“`

4.变量之间的值传递

  • 可以将一个变量的值赋值给另一个变量
int a = 10;
int b = a;
  • 连续赋值

    int a,b,c;
    a = b =c =0;
    

5.如何查看变量的值?

  • 使用printf输出一个/多个变量的值

    int a = 10, c = 11;
    printf("a=%d, c=%d", a, c);
    
  • double\float\char的输出,格式符的一些小技巧

    double height = 1.75;
    char blood = 'A';
    printf("height=%.2f, 血型是%c", height,  blood);

    变量的作用域

1.变量的作用域

  • C语言中所有变量都有自己的作用域,申明变量的类型不同,其作用域也不同。C语言中的变量,按照作用域的范围可分为两种, 即局部变量和全局变量。

2.局部变量

  • 局部变量也称为内部变量。局部变量是在函数内作定义说明的。其作用域仅限于函数内(代码块), 离开该 函数后再使用这种变量是非法的。
    • 例如:
~~ int main(){
~~     int i = 998; // 作用域开始
~~     return 0;
~~ }// 作用域结束
~~ int main(){
~~     {
~~         int i = 998; // 作用域开始
~~     }// 作用域结束
~~     return 0;
~~ }
~~ int main(){
~~     {
~~         {
~~             int i = 998;// 作用域开始
~~         }// 作用域结束
~~     }
~~     return 0;
~~ }
  • 作用域补充说明(了解):
    • 主函数中定义的变量也只能在主函数中使用,不能在其它函数中使用。同时主函数中也不能使用其它函数中定义的变量。因为主函数也是一个函数,它与其它函数是平行关系。
    • 形参变量是属于被调函数的局部变量,实参变量是属于主调函数的局部变量。
    • 允许在不同的函数中使用相同的变量名,它们代表不同的对象,分配不同的单元,互不干扰,也不会发生混淆。虽然允许在不同的函数中使用相同的变量名,但是为了使程序明了易懂,不提倡在不同的函数中使用相同的变量名。

3.全局变量

  • 全局变量也称为外部变量,它是在函数外部定义的变量。

4.常见错误

  • 变量名相同

    ~~ int a = 10; int a = 12;
  • 变量的作用域不对
  • 变量的创建和释放过程
  • 代码块作用域 { int a = 10; }

变量的存储

  • 一个变量所占用的存储空间,不仅跟变量类型有关,而且还跟编译器环境有关系。同一种类型的变量,在不同编译器环境下所占用的存储空间又是不一样的
    • 所占用字节数跟类型有关,也跟编译器环境有关
    • 内存由大到小寻址
    • 变量存储单元的第一个字节的地址就是该变量的地址
    • 任何变量在内存中都是以二进制的形式存储。一个负数的二进制形式,其实就是对它的正数的二进制形式进行取反后再+1。(取反的意思就是0变1、1变0)

类型16位编译器32位编译器64位编译器
char111
int244
float444
double888
short222
long448
long long888
void*248

3.取值范围

  • 不同数据类型所占的存储空间是不一样的,字节长度不一样,包含的二进制位数就不一样,能表示的数据范围也就不一样

  • 如果赋值的时候超出了变量的取值范围,那么将损失精度,得到“垃圾数据”(“垃圾数据”就是指并非我们想要的数据)

关键字所占字节数表示范围
int4-2^(31) \~ 2^(31)-1
signed short int2-2^(15) \~ 2^(15)-1
signed long int4-2^(31) \~ 2^(31)-1
unsigned int40 \~ 2^(32)-1
unsigned short int20 \~ 2^(16)-1
unsigned long int40 \~ 2^(32)-1
float4绝对值E-37 \~ E+38
double8绝对值E-307 \~ E+308

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值