函数调用
这是 最常见的用途,当后面跟着一个函数名时, 就构成了函数调用运算符。

(图片来源网络,侵删)
作用:
- 执行函数:程序会跳转到函数定义的代码块去执行。
- 传递参数: 内有表达式(称为实参/arguments),这些表达式的值会被传递给函数。
- 接收返回值:如果函数有返回值,函数调用表达式本身就可以被视为一个值,可以赋给变量或用于其他表达式。
示例代码:
#include <stdio.h>
// 1. 函数定义
// 这里的 () 用于声明函数参数
int add(int a, int b) {
return a + b;
}
// 2. 函数声明
void print_message();
int main() {
int x = 5, y = 10;
// 3. 函数调用
// 这里的 () 是调用运算符
// - 传递参数 x 和 y
// - 接收返回值 15 并赋给 sum 变量
int sum = add(x, y);
printf("The sum is: %d\n", sum); // 输出: The sum is: 15
// 4. 无参数函数的调用
print_message();
return 0;
}
// 函数实现
void print_message() {
printf("Hello from a function!\n");
}
强制类型转换
当 出现在一个数据类型(如 int, double, float 等)后面时,它用作强制类型转换运算符。
作用: 将紧跟在 后面的表达式的值,临时转换为括号中指定的数据类型,这通常用于避免整数除法或进行精度转换。

(图片来源网络,侵删)
示例代码:
#include <stdio.h>
int main() {
int a = 5;
int b = 2;
double result;
// 1. 不使用强制类型转换 (整数除法)
// 5 / 2 的结果是 2,小数部分被丢弃
result = a / b;
printf("Without cast: %d / %d = %f\n", a, b, result); // 输出: Without cast: 5 / 2 = 2.000000
// 2. 使用强制类型转换
// (double)a 将 a 临时转换为 double,5.0 / 2 得到 2.5
result = (double)a / b;
printf("With cast: (double)%d / %d = %f\n", a, b, result); // 输出: With cast: (double)5 / 2 = 2.500000
return 0;
}
改变运算优先级和声明变量
当 紧跟在变量名后面时,它主要用于声明变量,特别是指针和函数指针。
作用:
- 声明指针变量: 将 运算符与变量名绑定,而不是与数据类型绑定,这在声明多个指针时非常有用。
- 声明函数指针: 是定义函数指针类型语法的核心部分,用于将函数的返回类型和参数列表“封装”成一个类型。
示例代码:

(图片来源网络,侵删)
#include <stdio.h>
// 一个简单的函数
int add(int x, int y) {
return x + y;
}
int main() {
// 1. 声明指针变量
// int *p1, p2; // 错误!p2 是一个整型变量,不是指针。
// int *p1, *p2; // 正确!p1 和 p2 都是指向整型的指针。
// 使用 () 可以更清晰地声明多个指针
int *p1, *p2; // p1 和 p2 都是指向 int 的指针
int a = 10, b = 20;
p1 = &a;
p2 = &b;
printf("p1 points to: %d, p2 points to: %d\n", *p1, *p2);
// 2. 声明函数指针
// 定义一个函数指针类型,它指向一个接收两个 int 参数并返回 int 的函数
int (*func_ptr)(int, int);
// 将函数 add 的地址赋给这个函数指针
func_ptr = add;
// 通过函数指针调用函数
int result = func_ptr(5, 3); // 等价于 add(5, 3)
printf("Result from function pointer: %d\n", result); // 输出: Result from function pointer: 8
return 0;
}
| 用法 | 语法示例 | 作用 |
|---|---|---|
| 函数调用 | my_function(arg1, arg2); |
执行函数,传递参数,接收返回值。 |
| 强制类型转换 | (double)my_variable; |
将表达式的值临时转换为指定类型。 |
| 声明/改变优先级 | int *p;int (*func_ptr)(int); |
声明指针变量,将 与变量名绑定。 定义函数指针类型。 |
理解 在不同场景下的不同含义,是掌握 C 语言语法的关键一步,希望这个解释能帮助你更好地理解!
