最近看方法参数中的疑惑
1 | sai_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++
1 | // && 和 & |
请谨慎使用代码。了解详情
content_copy
在这种情况下,y
是一个引用,它指向变量 x
。p
是一个指针,它指向变量 x
的地址。p1
是一个指针,它指向一个整数。pp
是一个指针,它指向一个指针,该指针指向一个整数。
结论
&& 和 & 表示引用和取地址,* 和 表示指针的指针和指针。
总结
* 和 在 C 和 C++ 中的区别在于:
- ** 在 C 中表示指针的指针,在 C++ 中表示指针。
- ** 在 C 中可以用来存储另一个指针的地址,在 C++ 中可以用来存储变量的地址。
因此,&& 和 & 在 C 和 C++ 中都是可用的,意思也完全相同。* 和 在 C 中也可以使用,但意思与 C++ 中的意思有所不同。