C++ 作为c+;中函数返回类型的无符号字符*数据+;或c

C++ 作为c+;中函数返回类型的无符号字符*数据+;或c,c++,c,visual-studio-2010,clr,return-type,C++,C,Visual Studio 2010,Clr,Return Type,我正在使用VisualStudio2010和CLR(公共语言运行时)。 我想将unsigned char*从compress函数返回到main函数,但unsigned char*和char*都会导致错误 “错误7错误C2440:'=':无法从'char*'转换为'unsigned char*'F:\4-2\desh\PROJECT\Database Compression Main\Database Compression 2\db_comp_Main.cpp 21” 需要从压缩函数返回无符号字

我正在使用VisualStudio2010和CLR(公共语言运行时)。 我想将unsigned char*从compress函数返回到main函数,但unsigned char*和char*都会导致错误

“错误7错误C2440:'=':无法从'char*'转换为'unsigned char*'F:\4-2\desh\PROJECT\Database Compression Main\Database Compression 2\db_comp_Main.cpp 21”


需要从压缩函数返回无符号字符*类型的数据。请提供帮助。

更改任何数据类型(函数参数<代码>*数据或局部变量<代码>*主数据)以匹配该类型。试试这个

unsigned char *main_data;
或者

简单类型转换可以使其正常工作:

unsigned char* compressor(char *data)
{
    unsigned char *compressed_string;
    compressed_string = (unsigned char*) data;
    return compressed_string;
}
int main()
{
  char *main_data;
  main_data=(char*) compressor("Muhammad Ashikuzzaman.Student from Khulna University Of Engineering And Technology from Bangladesh");
  printf("%s",main_data);
}
或者

(使用
char*
更改所有内容)

有三种字符类型:(普通)
char
signed char
unsigned char
。任何
char
通常是一个8位整数*(在C语言中没有专用的“字符类型”),从这个意义上说,
有符号的
无符号的char
具有有用的含义(通常相当于
uint8_t
int8_t
)。当用作文本意义上的字符时,请使用
字符
(也称为普通字符)。这通常是一个
有符号字符
,但可以由编译器以任何一种方式实现。所以我认为在这里使用
char*
是安全的

工作示例(将
char*
视为数据类型):

此外,为了简单起见,您可以使用指针对指针

编辑


当您要求使用另一种方法来传递引用时,除了将数组作为函数参数传递引用外,没有其他方法。因为当您编写
void func(char str[])
时,您可能会认为您正在执行传递值。但是g++编译器将优化语句为
void func(char&str[0])
,以避免作为函数参数处理整个数组。因此,在所有场景中,您实际上都是通过引用传递的。

更改任何数据类型(函数参数
*data
或局部变量
*main_data
)以匹配该类型。试试这个

unsigned char *main_data;
或者

简单类型转换可以使其正常工作:

unsigned char* compressor(char *data)
{
    unsigned char *compressed_string;
    compressed_string = (unsigned char*) data;
    return compressed_string;
}
int main()
{
  char *main_data;
  main_data=(char*) compressor("Muhammad Ashikuzzaman.Student from Khulna University Of Engineering And Technology from Bangladesh");
  printf("%s",main_data);
}
或者

(使用
char*
更改所有内容)

有三种字符类型:(普通)
char
signed char
unsigned char
。任何
char
通常是一个8位整数*(在C语言中没有专用的“字符类型”),从这个意义上说,
有符号的
无符号的char
具有有用的含义(通常相当于
uint8_t
int8_t
)。当用作文本意义上的字符时,请使用
字符
(也称为普通字符)。这通常是一个
有符号字符
,但可以由编译器以任何一种方式实现。所以我认为在这里使用
char*
是安全的

工作示例(将
char*
视为数据类型):

此外,为了简单起见,您可以使用指针对指针

编辑


当您要求使用另一种方法来传递引用时,除了将数组作为函数参数传递引用外,没有其他方法。因为当您编写
void func(char str[])
时,您可能会认为您正在执行传递值。但是g++编译器将优化语句为
void func(char&str[0])
,以避免作为函数参数处理整个数组。因此,在所有场景中,您实际上都是通过引用传递的。

这里您必须为字符串分配内存存储。指针唯一点地址不是任何字节数组的序列。必须为C使用CaloC或Malc,而C++要用新的方法分配所需的内存地址。使用类型转换将字符*转换为无符号字符*

#include <bits\stdc++.h>
unsigned char* compressor(unsigned char *data)
{
    unsigned char *compressed_string = new unsigned char[100];
    //With some process I had compressed string of data variable as unsigned unsigned char** in variable compressed_string successfully and also printed here. Now want to return it from here.
    compressed_string = (unsigned char*)"working";
    return compressed_string;
}
int main()
{
  unsigned char *main_data = new unsigned char[1000];
  main_data=compressor((unsigned char*)"Muhammad Ashikuzzaman.Student from Khulna University Of Engineering And Technology from Bangladesh");// When I click the error from error list the cursor is put here beside str by visual studio.
  printf("%s",main_data);
}
#包括
无符号字符*压缩器(无符号字符*数据)
{
无符号字符*压缩字符串=新的无符号字符[100];
//通过一些过程,我成功地将数据变量的字符串压缩为变量压缩字符串中的unsigned unsigned char**,并在这里打印。现在我想从这里返回它。
压缩字符串=(无符号字符*)“正在工作”;
返回压缩字符串;
}
int main()
{
无符号字符*main_data=新的无符号字符[1000];
MiNyDATABOR=压缩器((无符号CHAR*)”Muhammad Ashikuzzaman。来自孟加拉库尔纳工程技术大学的学生“);/ /当我从错误列表中单击错误时,光标放在STR旁边的VisualStudio中。
printf(“%s”,主数据);
}
您可以根据需要使用不同的输入变量来使用内存,以避免不必要的动态分配

#include <bits\stdc++.h>
unsigned char* compressor(unsigned char *data) {
    unsigned char *compressed_string = new unsigned char[strlen((char*)data)+1];
    //With some process I had compressed string of data variable as unsigned char* in variable compressed_string successfully and also printed here. Now want to return it from here.
    compressed_string = (unsigned char*)"working";
    return compressed_string;
}
int main() {
    unsigned char *inp = new unsigned char[1000];
    inp = (unsigned char*)"Muhammad Ashikuzzaman.Student from Khulna University Of Engineering And Technology from Bangladesh";
    unsigned char *main_data = new unsigned char[strlen((char*)inp)+1];
    main_data = compressor(inp);
    printf("%s",main_data);
}
#包括
无符号字符*压缩器(无符号字符*数据){
unsigned char*compressed_string=新的unsigned char[strlen((char*)数据)+1];
//通过一些过程,我成功地将数据变量的字符串压缩为变量compressed_string中的unsigned char*,并在这里打印。现在,我想从这里返回它。
压缩字符串=(无符号字符*)“正在工作”;
返回压缩字符串;
}
int main(){
无符号字符*inp=新的无符号字符[1000];
InP=(无符号CHAR*)“Muhammad Ashikuzzaman,来自孟加拉库尔纳工程技术大学的学生”;
无符号字符*main_data=新的无符号字符[strlen((char*)inp)+1];
主数据=压缩机(inp);
printf(“%s”,主数据);
}

这里您必须为字符串分配内存存储。指针唯一点地址不是任何字节数组的序列。必须为C使用CaloC或Malc,而C++要用新的方法分配所需的内存地址。使用类型转换将字符*转换为无符号字符*

#include <bits\stdc++.h>
unsigned char* compressor(unsigned char *data)
{
    unsigned char *compressed_string = new unsigned char[100];
    //With some process I had compressed string of data variable as unsigned unsigned char** in variable compressed_string successfully and also printed here. Now want to return it from here.
    compressed_string = (unsigned char*)"working";
    return compressed_string;
}
int main()
{
  unsigned char *main_data = new unsigned char[1000];
  main_data=compressor((unsigned char*)"Muhammad Ashikuzzaman.Student from Khulna University Of Engineering And Technology from Bangladesh");// When I click the error from error list the cursor is put here beside str by visual studio.
  printf("%s",main_data);
}
#包括
无符号字符*压缩器(无符号字符*数据)
{
无符号字符*压缩字符串=新的无符号字符[100];
//通过一些过程,我将数据变量字符串压缩为uns