IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

c、cpp中使用匿名结构体、类定义数组

Vimer 2010-09-27 00:14:40 累计浏览 3,008 次
本机暂存

今天在翻unix网络编程的时候,无意中看到了使用匿名定义结构体/类定义数组的一段代码。

于是写了测试代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream>
#include <string>
#include <vector>
#include <map>
using namespace std;
 
struct st
{
    int a;
    int b;
    char *p;
    int c;
}sts[]={
    {1,1,"hh",1},
    {2,2,"ff",2}
};
 
class CObj
{
    public:
        int a;
        string s;
        int b;
 
}objs[]={
    {1,"x",11},
    {2,"y",22}
};
 
int main(int argc, const char *argv[])
{
    for (int i = 0; i < 2; i++) {
        printf("%d,%d,%s,%d\n",(sts+i)->a,(sts+i)->b,(sts+i)->p,(sts+i)->c);
    }
    for (int i = 0; i < 2; i++) {
        printf("%d,%s,%d\n",(objs+i)->a,(objs+i)->s.c_str(),(objs+i)->b);
    }
}

运行结果如下:

1,1,hh,1
2,2,ff,2
1,x,11
2,y,22

整个调用过程中,都没有用st或者CObj显示创建任何参数,调用起来要简洁很多,简直比python还要简洁。

用python的代码来表示的话:

1
2
3
4
sts = (
    (1,1,"hh",1),
    (2,2,"ff",2)
)

但python不支持匿名类的定义,只能用下标来访问数据,这样看来倒是C的表现更好一些呢。

记录一下,有机会在项目中用一下。

同分类推荐文章

  1. SmartPerfetto 2026.06.04-07.17 六周更新复盘:从 v1.0.28 到 v1.1.1 (2026-07-17 00:00:00)
  2. 用 CLIProxyAPI 把 Codex 变成一个 OpenAI 兼容的 API 服务 (2026-07-12 22:05:00)
  3. 读完 Bun 用 Rust 重写:1 个人 11 天重写 50 万行代码是怎么做到的 (2026-07-12 08:00:00)

查看更多 后端 文章 →

建议继续学习

  1. libcurl的使用总结(二) (累计阅读 15,134)
  2. 如何学好C++语言 (累计阅读 10,532)
  3. Emacs配置C/C++-mode的代码智能提示和自动补全 (累计阅读 10,472)
  4. colortail,让 tail 命令绚丽起来 (累计阅读 10,324)
  5. 在C++中实现foreach循环,比for_each更简洁! (累计阅读 9,555)
  6. 几个内存相关面试题(c/c++) (累计阅读 9,507)
  7. 关于使用STL的红黑树map还是hashmap的问题 (累计阅读 8,921)
  8. 浅析C++多线程内存模型 (累计阅读 8,866)
  9. C++ 多线程编程总结 (累计阅读 8,128)
  10. 使用gdb调试运行时的程序小技巧 (累计阅读 7,247)