今天学习到一个新的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。