我看人家以 DLL文件+H文件 形式给的资料,其中有一个函数,原型声明如下:
bool __stdcall BuildAndEncryptMultSessionKey(UINT count, char* const * keys, const UINT* cardNumbers, UINT sessionID);
本人理解如下:
其中1.count、sessionID应该是输入参数,因前面没有const,因此在该函数体内是可以改变其值的。
2.cardNumbers是应该是前面程序生成的变量,作为此函数的输入参数,因前面有const,不能在函数体内修改该值
3.对于char* const * keys,我的理解是,先简化看成char ** keys,因此应该指向字符指针的指针,或是1个二维的字符数组,中间加上const,是否说明1维数组元素不能改变?keys这个参数是作为输入参数,还是输出参数呢?该函数最后的输出又是什么呢?请大侠们指点迷津,最好能给一个该函数的调用示例!

解决方案 »

  1.   

    pointer to const pointer to char
    是指向char类型的const指针http://community.csdn.net/Expert/TopicView.asp?id=4511528
      

  2.   

    感谢pomelowu(羽战士) 大侠的指点!
      

  3.   

    没有具体的参数说明,就猜一下
    看接口名称感觉keys应该是输出,但要先初始化好内存空间.
    const UINT count = 10;
    char * keys[count];
    for (int i = 0; i < count; i++) keys[i] = new char[32];
    UINT cardNumbers[count];
    UINT sessionID;
    BuildAndEncryptMultSessionKey(count, keys, cardNumbers, sessionID);
      

  4.   

    char* const * keys
    把后面的*keys理解为数组是1个二维的字符数组,中间加上const,是否说明1维数组元素不能改变我同意你的看法!应该是对的
      

  5.   

    keys理论上看应该可以是双向的,不过这里我觉得是输入参数,诸如这样 
    char * p[] = {"aaa", "bbb"};