一文彻底搞清楚C语言的数据类型和变量

简介: 本文介绍了数据类型(基本、构造、指针、空类型)、变量(使用、命名规则、作用域)和常量(字面、符号、枚举、表达式),帮助初学者理解编程基础概念。坚持学习,定能创造奇迹!

程序员Feri一名12年+的程序员,做过开发带过团队创过业,擅长Java、鸿蒙、嵌入式、人工智能等开发,专注于程序员成长的那点儿事,希望在成长的路上有你相伴!君志所向,一往无前!


1.数据类型

image.png

1.1 基本数据类型

1. 整型Integer

int:通常用来表示整数,在不同的编译器和系统环境下,其占用的字节数可能有所不同,常见的是 4 个字节,能表示一定范围的整数值(例如在 32 位系统中,范围大致是 -2147483648 到 2147483647)。

short int(或 short):一般占用 2 个字节,所能表示的整数范围比 int 小,适用于只需较小整数范围的情况,可节省内存空间。

long int(或 long):通常占用 4 个字节或 8 个字节(取决于编译器和系统),能表示的整数范围比 int 更宽,用于需要较大整数范围的场景。

long long int(或 long long):一般占用 8 个字节,可表示非常大的整数范围,常用于对大整数有要求的运算等情况。

2. 浮点型Floating-point

float:单精度浮点型,占用 4 个字节,用于表示带有小数部分的实数,不过其精度相对有限,能表示的有效数字大约是 6 到 7 位。

double:双精度浮点型,占用 8 个字节,精度比 float 高,能表示的有效数字通常在 15 到 16 位左右,常用于对精度要求较高的数值计算场景,比如科学计算等。

long double:一般比 double 具有更高的精度,不同编译器下其占用字节数可能不同,常用于需要极高精度的特殊数值处理情况。

3. 字符型Character

char:用于存储单个字符,在 C 语言中字符是以 ASCII 码值的形式存储的,占用 1 个字节。例如字符 'A' 实际存储的是其对应的 ASCII 码值 65(十进制)。

1.2 构造数据类型

数组(Array):是一组相同类型的数据元素的有序集合。

结构体(Structure):可以将不同类型的数据成员组合在一起,形成一个新的自定义数据类型。

共用体(Union):也叫联合体,它允许不同类型的数据成员共享同一段内存空间,在不同时刻可以存放不同类型的数据,但同一时刻只能存放其中一种类型的数据。

枚举(Enumeration):用于定义一组具有离散值的常量标识符。

1.3 指针类型

指针是一种特殊的数据类型,它存储的是另一个变量的内存地址。

例如 int *p;

表示定义了一个指向整型数据的指针变量 p,通过指针可以间接访问和操作其所指向的变量

在 C 语言中指针的使用非常灵活且广泛,比如在函数传参改变实参的值、动态内存分配等方面都有重要应用。

1.4 空类型(void)

void:常用于表示函数无返回值或者无参数等情况,比如定义一个无返回值的函数可以写成

void functionName();

也用于指针指向不明类型数据的情况等,

像 void *ptr;

表示定义了一个可以指向任意类型数据的指针,但在实际使用时需要进行类型转换才能正确操作其所指向的数据。

2 变量

2.1 使用

变量就像是一个 “容器”,用来存放特定类型的数据。

变量需要先定义再赋值,然后就可以正常使用啦

定义变量格式:数据类型 变量名;

    //变量 声明
    int num1;
    //变量 赋值
    num1=101;
    //变量 声明和赋值
    int num2=110;
    //变量使用
    printf("num1+num2=%d\n",num1+num2);
AI 代码解读

2.2 变量的命名规则

变量名只能由字母(大小写均可)、数字和下划线组成。

变量名必须以字母或下划线开头,不能以数字开头。

变量名不能是 C 语言中的关键字(如 int、float、if、for 等这些有特定语法功能的保留字)。

变量名最好具有一定的含义,方便阅读和理解代码,例如用 studentName 表示学生的姓名变量等。

2.3 变量的作用域

局部变量:

在函数内部定义的变量称为局部变量,其作用域仅限于定义它的函数内部

全局变量:

在所有函数外部定义的变量就是全局变量,它的作用域从定义的位置开始,到整个源文件结束

//全局 变量
int score=88;

int main(void)
{
    //局部变量
    float money=8.8f;

    printf("money=%f\n",money);
    printf("sex=%d\n",score);

    return 0;
}
AI 代码解读

3.常量

3.1 常量

常量是指在程序运行过程中其值不能被改变的量

3.2 字面常量

整型字面常量:

就是直接写出的整数数值,例如 10、-25、0 等。

在 C 语言中,根据数值大小和表示形式,整型字面常量还可细分为

十进制整数(如 123)

八进制整数(以 0 开头,像 012 表示八进制的 10)

十六进制整数(以 0x 或 0X 开头,例如 0x1A 表示十六进制的 26)。

浮点型字面常量:

用来表示实数,有两种表示形式。

一种是十进制形式,例如 3.14、-0.5 等;

另一种是科学计数法形式,比如 1.23e2 表示 123.0(e 后面的数字表示 10 的幂次)

字符型字面常量:

用单引号括起来的单个字符,例如 'A'、'3'、' '(空格字符)等。

在 C 语言中,字符型字面常量实际上存储的是该字符对应的 ASCII 码值(占 1 个字节),例如 'A' 的 ASCII 码值是 65。

字符串字面常量:

用双引号括起来的字符序列,像 "Hello"、"C Language" 等。

字符串在内存中是以字符数组的形式存储的,并且会自动在末尾添加一个 '\0' 作为字符串结束标志,所以字符串 "abc" 实际上占用 4 个字节。

3.3 符号常量

通过 #define 预处理指令来定义,语法格式为:

define 符号常量名 常量值

在程序编译之前,预处理器会把代码中所有出现的符号常量名替换成对应的常量值。

使用符号常量可以增强程序的可读性和可维护性,当需要修改常量值时,只需要在 #define 语句处修改即可,而不用在程序中到处查找修改。

3.4 枚举常量

在定义枚举类型时,枚举成员本身就是常量

3.5 常量表达式

是由常量和运算符组成的表达式,其结果在编译时就能确定,例如 2 + 3 * 4 这个表达式的值为 14.

在编译阶段就可以计算出来,在程序运行时它的值不会再发生变化,也属于一种特殊的常量形式。

好啦,本篇就到这里啦,希望大家有所收获!坚持,就一定出奇迹!

相关文章
C 语言中的数据类型转换:连接不同数据世界的桥梁
C语言中的数据类型转换是程序设计中不可或缺的一部分,它如同连接不同数据世界的桥梁,使得不同类型的变量之间能够互相传递和转换,确保了程序的灵活性与兼容性。通过强制类型转换或自动类型转换,C语言允许开发者在保证数据完整性的前提下,实现复杂的数据处理逻辑。
|
2月前
|
【C语言程序设计——入门】基本数据类型与表达式(头歌实践教学平台习题)【合集】
这份文档详细介绍了编程任务的多个关卡,涵盖C语言的基础知识和应用。主要内容包括: 1. **目录**:列出所有关卡,如`print函数操作`、`转义字符使用`、`数的向上取整`等。 2. **各关卡的任务描述**:明确每关的具体编程任务,例如使用`printf`函数输出特定字符串、实现向上取整功能等。 3. **相关知识**:提供完成任务所需的背景知识,如格式化输出、算术运算符、关系运算符等。 4. **编程要求**:给出具体的代码编写提示。 5. **测试说明**:包含预期输入输出,帮助验证程序正确性。 6. 文档通过逐步引导学习者掌握C语言的基本语法和常用函数,适合初学者练习编程技能。
95 1
【C语言】C语言的变量和声明系统性讲解
在C语言中,声明和定义是两个关键概念,分别用于告知编译器变量或函数的存在(声明)和实际创建及分配内存(定义)。声明可以多次出现,而定义只能有一次。声明通常位于头文件中,定义则在源文件中。通过合理组织头文件和源文件,可以提高代码的模块化和可维护性。示例包括全局变量、局部变量、函数、结构体、联合体、数组、字符串、枚举和指针的声明与定义。
107 12
【C语言】数据类型全解析:编程效率提升的秘诀
在C语言中,合理选择和使用数据类型是编程的关键。通过深入理解基本数据类型和派生数据类型,掌握类型限定符和扩展技巧,可以编写出高效、稳定、可维护的代码。无论是在普通应用还是嵌入式系统中,数据类型的合理使用都能显著提升程序的性能和可靠性。
113 8
|
3月前
|
【C语言】全局搜索变量却找不到定义?原来是因为宏!
使用条件编译和 `extern` 来管理全局变量的定义和声明是一种有效的技术,但应谨慎使用。在可能的情况下,应该优先考虑使用局部变量、函数参数和返回值、静态变量或者更高级的封装技术(如结构体和类)来减少全局变量的使用。
63 5
【c语言】数据类型和变量
本文介绍了C语言中的数据类型和变量。数据类型分为内置类型和自定义类型,内置类型包括字符型、整型、浮点型等,每种类型有不同的内存大小和取值范围。变量分为全局变量和局部变量,它们在内存中的存储位置也有所不同,分别位于静态区和栈区。通过示例代码和图解,详细阐述了这些概念及其应用。
100 1
C语言指针与指针变量的区别指针
指针是C语言中的重要概念,用于存储内存地址。指针变量是一种特殊的变量,用于存放其他变量的内存地址,通过指针可以间接访问和修改该变量的值。指针与指针变量的主要区别在于:指针是一个泛指的概念,而指针变量是具体的实现形式。
C语言:设置地址为 0x67a9 的整型变量的值为 0xaa66
在C语言中,可以通过指针操作来实现对特定地址的访问和赋值。要将地址为 0x67a9 的整型变量值设为 0xaa66,可以先定义一个指向该地址的指针,并通过该指针对该内存位置进行赋值操作。需要注意的是,直接操作内存地址具有一定风险,必须确保地址合法且可写。代码示例应考虑字节序及内存对齐问题。
初识C语言:常量与变量中寻找数据类型
初识C语言:常量与变量中寻找数据类型
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等