C/C++参数中的

admin 2026-06-14 20:59:39

最近看方法参数中的疑惑

123sai_status_t sai_api_query(_In_ sai_api_t sai_api_id, _Out_ void** api_method_table){}

_In_和_Out_是用于标记参数的传递方式的注解。它们并不是C\C++语言的关键字,而是一种约定俗成的注释方式,用于提示函数的调用者和阅读者关于参数的特性。

_In_表示该参数是输入参数,即函数内部会读取参数的值,但不会修改它。通过这个标记,我们可以清楚地知道该参数在函数内部只被用于读取数据。

_Out_表示该参数是输出参数,即函数内部会修改参数的值,并将修改后的结果返回给调用者。通过这个标记,我们可以清楚地知道该参数在函数内部会被修改,我们在调用函数时需要确认传入的参数具备存储修改后结果的能力。

总结起来,_In_和_Out_这两个标记主要用于提供参数的传递方式的额外信息,帮助理解函数的行为和外部变量的使用。

上面的**又是什么意思呢?

&& 和 & 是 C++ 中的运算符, 和 * 是 C++ 中的指针。&& 和 & 表示引用和取地址, 和 * 表示指针的指针和指针。

&& 和 & 的区别

特性

&&

&

定义

引用

取地址

用途

指向变量

获取变量的地址

实现

可以用来避免值传递造成的副本开销

可以用来访问变量的值

* 和 的区别

特性

**

*

定义

指针的指针

指针

用途

存储另一个指针的地址

存储变量的地址

实现

可以用来实现链表、树等数据结构

可以用来访问变量的值

示例

C++

12345678// && 和 &int x = 10;int &y = x;int *p = &x;// ** 和 *int *p1 = new int(10);int **pp = &p1;

请谨慎使用代码。了解详情

content_copy

在这种情况下,y 是一个引用,它指向变量 x。p 是一个指针,它指向变量 x 的地址。p1 是一个指针,它指向一个整数。pp 是一个指针,它指向一个指针,该指针指向一个整数。

结论

&& 和 & 表示引用和取地址,* 和 表示指针的指针和指针。

总结

* 和 在 C 和 C++ 中的区别在于:

** 在 C 中表示指针的指针,在 C++ 中表示指针。

** 在 C 中可以用来存储另一个指针的地址,在 C++ 中可以用来存储变量的地址。

因此,&& 和 & 在 C 和 C++ 中都是可用的,意思也完全相同。* 和 在 C 中也可以使用,但意思与 C++ 中的意思有所不同。