Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在c+中声明常量字节*+;_C++_Winapi_Pointers_Certificate - Fatal编程技术网

C++ 在c+中声明常量字节*+;

C++ 在c+中声明常量字节*+;,c++,winapi,pointers,certificate,C++,Winapi,Pointers,Certificate,我目前正在尝试调用函数调用。声明如下: const void* WINAPI CertCreateContext( __in DWORD dwContextType, __in DWORD dwEncodingType, __in const BYTE *pbEncoded, __in DWORD cbEncoded, __in DWORD dwFlags, __in_opt PCERT_CREATE_CONTEXT_P

我目前正在尝试调用函数调用。声明如下:

const void* WINAPI CertCreateContext(
  __in      DWORD dwContextType,
  __in      DWORD dwEncodingType,
  __in      const BYTE *pbEncoded,
  __in      DWORD cbEncoded,
  __in      DWORD dwFlags,
  __in_opt  PCERT_CREATE_CONTEXT_PARA pCreatePara
);

如您所见,第三个输入参数调用常量字节*,它表示您试图创建的编码证书。在C++中,如何定义这样的变量?

< p>您只需要声明<代码>字节*/COD>,编译器将自动将非-Cuth> const <代码> s转换为<代码> const <代码> S.< /P> < P>您不需要。函数参数是指向常量字节的指针,这意味着函数不会更改它指向的字节。一个简单的例子:

void f( const BYTE * p ) {
    // stuff
}

BYTE b = 42;
BYTE a[] = { 1, 2, 3 };

f( & b );
f( a );
当然,您需要包含声明字节类型的标题。

根据以下内容:


pbEncoded是指向缓冲区的指针,缓冲区包含要复制的现有编码上下文内容。

将常规指针传递到字节。那里的
常量
表示指向的对象不会在函数中被修改。

@GMan我知道,这就是为什么我只问他们,在绝望的希望中,落选者可能会解释他们自己。同意-答案完全正确。@Neil:也许一个老派的微软狂热者希望用匈牙利语回答这个问题。或者可能是因为错过了一个
。不管怎样,+1表示正确。@Mike我通常在发布前编译真正的代码,但像这样的问题取决于我的代码编写能力-谢谢:-)谢谢你,Neil。我的意思是,指向的对象不会被修改。当通过值、
const
或其他方式传递时,指针本身当然无法修改。固定的