1. 复合字面量(Compound Literals) [C99]
复合字面量是在 C99 中引入的,允许你在代码中直接定义结构体、数组或其他复杂数据类型的字面量。这种技巧可以简化代码,尤其是在需要临时生成复杂数据结构时。
#include <stdio.h>
struct Point {
int x, y;
};
int main() {
// 创建一个临时的结构体实例
struct Point p = (struct Point){ .x = 10, .y = 20 };
printf("Point: (%d, %d)\n", p.x, p.y);
// 也可以直接在函数调用中使用复合字面量
printf("Point: (%d, %d)\n", ((struct Point){ .x = 30, .y = 40 }).x, ((struct Point){ .x = 30, .y = 40 }).y);
return 0;
}
优势:
- 复合字面量消除了对临时变量的需求,简化了代码编写。
- 适合在函数调用中临时创建结构体或数组。
2. 可变长数组(Variable Length Arrays, VLAs) [C99]
可变长数组允许数组的长度在运行时动态确定,而不是像传统数组那样在编译时确定大小。这个特性在 C99 中引入,虽然在 C11 中变为可选特性,但仍然是一个强大的工具。
#include <stdio.h>
void print_array(int size) {
int arr[size]; // 可变长数组,大小取决于运行时传入的 size
for (
标签:struct,Point,int,C99,字面,不太,数组,C语言,技巧
From: https://blog.csdn.net/Nagi_226/article/details/144415158