在C语言中,temp 是一个变量名,而不是一个关键字或保留字。

(图片来源网络,侵删)
它的名字来源于英文单词 "temporary"(临时的),temp 通常被用作一个临时变量的名称。
核心含义:临时变量
临时变量是一个在程序执行过程中,为了暂时存储数据、进行中间计算或交换数据而创建的变量,它的作用范围通常很小,仅限于某个特定的代码块(如一个函数、一个循环或一个算法步骤)。
temp 这个名字本身没有特殊的语法功能,它之所以被广泛使用,完全是因为它的命名约定,就像 i 常被用作循环变量,ptr 常被用作指针变量一样,temp 成为了临时变量的“标准”或“通用”名称。
temp 的常见用途
以下是 temp 在C语言中最常见的几种使用场景:

(图片来源网络,侵删)
数据交换
这是 temp 最经典的用途,当你需要交换两个变量的值时,必须借助第三个临时变量,因为直接赋值会导致原值丢失。
示例:交换两个整数的值
#include <stdio.h>
int main() {
int a = 10;
int b = 20;
int temp; // 声明一个临时变量 temp
printf("交换前: a = %d, b = %d\n", a, b);
// 交换过程
temp = a; // 第一步:将 a 的值存入 temp
a = b; // 第二步:将 b 的值赋给 a
b = temp; // 第三步:将 temp 中原来的 a 的值赋给 b
printf("交换后: a = %d, b = %d\n", a, b);
return 0;
}
输出:
交换前: a = 10, b = 20
交换后: a = 20, b = 10
存储计算中间结果
在复杂的计算过程中,你可能需要分步计算并将中间结果存储起来,以便后续使用。

(图片来源网络,侵删)
示例:计算一个表达式的中间值
#include <stdio.h>
int main() {
int x = 5, y = 10;
float result;
float temp; // 用于存储中间计算结果
// 计算 (x + y) / 2.0 的平方
temp = (x + y) / 2.0f; // 先计算平均值
result = temp * temp; // 再计算平方
printf("结果是: %f\n", result); // 输出 225.000000
return 0;
}
在排序算法中
许多排序算法(如冒泡排序、选择排序)的核心操作就是交换数组中两个元素的位置,这必然会用到 temp 变量。
示例:冒泡排序片段
void bubbleSort(int arr[], int n) {
for (int i = 0; i < n-1; i++) {
for (int j = 0; j < n-i-1; j++) {
// 如果前一个元素比后一个大,则交换它们
if (arr[j] > arr[j+1]) {
int temp = arr[j]; // temp 保存 arr[j] 的值
arr[j] = arr[j+1]; // 将 arr[j+1] 的值给 arr[j]
arr[j+1] = temp; // 将 temp 的值(原 arr[j])给 arr[j+1]
}
}
}
}
函数参数交换(注意陷阱)
新手会试图用 temp 来在函数内部交换两个传入参数的值,但这在C语言中是无效的,因为C语言是值传递(pass-by-value)。
示例:一个错误的交换函数
#include <stdio.h>
// 这个函数无法交换 main 函数中的 a 和 b
void swap_wrong(int x, int y) {
int temp;
temp = x;
x = y;
y = temp;
printf("函数内交换后: x = %d, y = %d\n", x, y);
}
int main() {
int a = 10, b = 20;
printf("函数调用前: a = %d, b = %d\n", a, b);
swap_wrong(a, b);
printf("函数调用后: a = %d, b = %d\n", a, b); // a 和 b 的值没有改变
return 0;
}
输出:
函数调用前: a = 10, b = 20
函数内交换后: x = 20, y = 10
函数调用后: a = 10, b = 20
原因: 函数 swap_wrong 接收的是 a 和 b 的副本,函数内部交换的是副本的值,不影响外部的 a 和 b,要实现真正的交换,需要传递指针。
| 方面 | 描述 |
|---|---|
| 本质 | temp 只是一个变量名,不是C语言的关键字。 |
| 来源 | 源于 "temporary"(临时的),是一种广为接受的命名约定。 |
| 用途 | 主要用作临时变量,用于存储中间数据、交换变量值等。 |
| 优点 | 命名清晰,一看就知道这个变量是临时使用的,提高了代码的可读性。 |
| 注意事项 | temp 只是一个普通的变量,遵守所有C语言变量的规则(如必须先声明后使用,有作用域等)。 |
当你看到 temp 这个变量名时,可以立刻明白它的角色:一个“临时工”,负责在特定的小任务中暂存数据,任务完成后它的使命就完成了。
