C++小技巧——将类型typedef成数组

今天学习到一个新的C++小技巧:
将一个类型定义成数组。大概像这样:

typedef struct _s
{
    int a = 0;
}s[1];

这样在定义s的时候可以分配在栈上,但是又因为是数组,在传递的时候是传递指针,而不用额外再定义指针。使用的时候是这样:

void func(s input)
{
    input->a++;
}

int main()
{
    s tmp;
    func(tmp);
    cout << tmp->a << endl; // print: 1
}

可以看到,变量tmp是分配在栈上的,然而函数传递时,用到的却是指针,这样函数内部的改变可以同步到函数外。因此最后打印出来的是1。

原创文章 34 获赞 41 访问量 5940

猜你喜欢

转载自blog.csdn.net/qq_44844115/article/details/106099244