注册 登录
编程论坛 C++教室

一个函数的参数类型是unsigned char*,调用时想传入一个char *的变量,可以嘛?

wengbin 发布于 2016-04-24 16:27, 4249 次点击
程序代码:
//函数原型
int DesEnc(
        unsigned char *pInData,
        int nInDataLen,
        unsigned char *pOutData,
        int *pOutDataLen
        );

程序代码:
//调用:
int ret = 0;
    char*  plain = "123465789";
    int plainlen = strlen(plain);

    unsigned char copybuf[2048];
    int coyplen = 0;

    char plain2[4096];
    int plainlen2 = 0;
    //用户使用的函数
    ret = DesEnc(plain, plainlen, copybuf, &coyplen);//这里报错了,说第一个参数处形参实参类型不匹配


[此贴子已经被作者于2016-4-24 16:31编辑过]

2 回复
#2
wengbin2016-04-24 16:32
有尝试将plain定义为unsigned char*型,但是strlen()就用不了了.....
#3
rjsp2016-04-24 19:30
可以,但这属于设计错误,应该设计成
int DesEnc(
        void *pInData,
        int nInDataLen,
        void *pOutData,
        int *pOutDataLen
        );

估计作者想表达byte*之意图
1