常用数据类型

㈠、数据类型

在这里插入图片描述

㈡、

符号常量:将程序中的常量定义为一个标识符,该常量就叫做符号常量。在使用前需要先定义,通常,符号常量使用大写字母表示:

#define PAI 3.14

㈢、变量

①、变量: 在程序运行中可以改变的量,

  • 每个变量都是一种类型,每种类型都定义了变量的格式和行为。
  • 每个变量都有属于自己的名字,并在内存中占有存储空间,其大小取决于类型。
  • 整型变量、实型变量和字符型变量。

实型数据:是按照指针的形式存储的,系统把实型数据的小数部分和指针部分分别存放。
在这里插入图片描述

字符型变量(1个字节):是用来存储字符常量的变量。将一个字符常量存储到一个字符变量中。字符数据在内存中存储的是字符ASCII码,其形式与整型的存储形式一样,所以C语言允许字符型数据与整型数据之间通用。

char cChar1;
char cChar2;
cChar1 = 'a';
cChar2 = 97;

在这里插入图片描述在这里插入图片描述

②、变量的存储类别

——变量的存储类别决定变量什么时候被分配到指定内存空间中以及在什么时候释放存储空间。存储类别— —为变量分配使用内存空间的方式(存储方式)

变量存储类别
动态存储静态存储

且可通过存储类修饰符来告诉编译器要处理什么类型变量

  • 自动(auto)
  • 静态(static)
  • 寄存器(register)
  • 外部(extern)

🍒动态存储和静态存储

静态存储指程序运行时分配的固定的存储方式
动态存储在程序运行期间根据需要动态地分配存储空间

先要了解内存中用户存储空间的基本情况
在这里插入图片描述
在这里插入图片描述
🍒 auto变量

  • 用于修饰一个局部变量为自动,每次执行到定义该变量,都会产生一个新的变量,并重新对其初始化。
  • 不同函数间、不同复合语句间以及函数与复合语句间都允许使用同名变量
自动变量的存储方式是动态,该变量被调用时才为其分配存储单元,并调用结束后立即释放,函数调用结束后自动变量的值不能在保留
在复合语句中定义自动变量,执行完复合语句就不能再使用
  • 函数内凡未标明存储类型说明的变量均视为自动变量。

在这里插入图片描述

void AddOne()
{
    auto int i =2;
    i = i + 1;
    printf("%d\n",i);
}
main()
{
   printf("第一次调用:")AddOne();
   printf("第二次调用:")AddOne();
}

🍒 static变量

  • 静态变量 :从变量定义时就为其分配存储单元并保持一直不变,直到整个程序结束,才释放其所占的存储单元。
  • 静态变量属于静态存储方式,但属于静态存储方式的变量不一定是静态变量,
用static关键字定义外部变量静态外部变量(静态全局变量)
用static定义内部变量静态内部变量(静态局部变量)

在这里插入图片描述

void AddOne()
{
    static int i =2;
    i = i + 1;
    printf("%d\n",i);
}
main()
{
   printf("第一次调用:")AddOne();
   printf("第二次调用:")AddOne();
   
}d

🍒static 变量和auto变量之间区别:
在这里插入图片描述
在这里插入图片描述
🍒 register 变量

  • 寄存器存储类变量,变量的值存储在内存中。
存在原因:如果需要频繁使用一个变量,必须反复访问内存储器,这样会花大量的存储时间,使运行速度降低。
ANS:register寄存器类型 变量,使用无须到内存中取数,可以直接从CPU的寄存器中取数运算,相当于一个快捷中转站,提高程序运行速度。

在这里插入图片描述

int fact( int n)
{
    register int i, f = 1;

    for(i = 1; i <= n; i++)
    {
       f = i * i;
    }
   
    return (f);
}
main()
{
   int i;
    for(i = 1; i <= 5; i++)
    {
       printf("%d != %d\n", i, fact(i))}

}

在这里插入图片描述
在这里插入图片描述
🍒 extern 变量

变量的声明告知编译器变量的名称和数据类型
变量的定义将为变量分配存储区域

extern变量称为外部存储变量,声明程序中要用到,但尚未定义的外部变量。——用于声明另外一个转换单元中定义的变量。
在这里插入图片描述

/* */
/*                    在Extern1文件中         */
/*/*/

int main()
{
    extern int i;
    printf("%d\n", i);
    return 0;
}

/* */
/*                    在Extern2文件中         */
/*/*/

int i = 100;
               

㈣、混合运算——强制转换

①、自动类型转换:将低等的数据类型转换为高等级的数据类型,由编译器自动完成。
在这里插入图片描述

㈤、

使用sizeof 运算符(该运算符是一个关键字)能够很容易地知道任一种数据类型地长度。如sizeof(int)的值就是一个整型的长度。

参考文献:C语言开发入门及项目实战

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值