标题:一个函数的参数类型是unsigned char*,调用时想传入一个char *的变量,可以嘛 ...
只看楼主
wengbin
Rank: 10Rank: 10Rank: 10
来 自:陕西西安
等 级:贵宾
威 望:19
帖 子:370
专家分:1846
注 册:2015-5-8
结帖率:100%
已结贴  问题点数:20 回复次数:2 
一个函数的参数类型是unsigned char*,调用时想传入一个char *的变量,可以嘛?
程序代码:
//函数原型
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编辑过]

2016-04-24 16:27
wengbin
Rank: 10Rank: 10Rank: 10
来 自:陕西西安
等 级:贵宾
威 望:19
帖 子:370
专家分:1846
注 册:2015-5-8
得分:0 
有尝试将plain定义为unsigned char*型,但是strlen()就用不了了.....
2016-04-24 16:32
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:20 
可以,但这属于设计错误,应该设计成
int DesEnc(
        void *pInData,
        int nInDataLen,
        void *pOutData,
        int *pOutDataLen
        );

估计作者想表达byte*之意图
2016-04-24 19:30



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-464071-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.097904 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved