怎么会出现:无法从“unsigned char *”转换为“unsigned char [16384]“的错误呢

eagle_2 2006-01-11 01:48:44
怎么会出现:无法从“unsigned char *”转换为“unsigned char [16384]“的错误呢 很是奇怪 都是字符指针,是在无法解决 请高手指教
...全文
582 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
alloutoflove 2006-01-14
  • 打赏
  • 举报
回复
数组名是常量指针, 不能做左值.
pomelowu 2006-01-14
  • 打赏
  • 举报
回复
buffer=lpszFile;
这个语法有问题。

数组和指针并不是一回事情。虽然有时候可以通用,比如
char arrary[100] = {0};
char * p = array;
但实际上是作了一次转换,array被转换为指针,然后赋值给p。

但是,array并不是真的指针,它不是一个int型的空间,盛放了一个内存块的首地址,它就是一个首地址的标记,所以你不能
array = p;
解决办法是,memcpy
Pipi0714 2006-01-14
  • 打赏
  • 举报
回复
定一个临时的指针变量,这样解决:
unsigned char *szTemp = buffer;

b.data = buffer;
b.n = 16000;

szTemp = lpszFile; //必须这样,否则用buffer你更改了数组的首地址,当程序自动释放内存空间的时候会出现错误。
eagle_2 2006-01-14
  • 打赏
  • 举报
回复
代码太长了,我大概说一下,
lpszFile是一个LPCTSTR类型的指针,指向一个内存块,现在我要在内存块中寻找多个指定的字符串(多模匹配)
因此我要一个块一个块的取出来匹配,即要填充BlockBuffer的data属性,于是我这样作
BlockBuffer b;
unsigned char buffer[16000];
b.data=buffer;
b.n=16000;
现在要更改buffer指针的指向的内容
buffer=lpszFile; //lpszFile每次增加16000
但是我这样做就报错了 就是以上的错误,请高手帮忙
兔子-顾问 2006-01-11
  • 打赏
  • 举报
回复
指针转成引用?
pomelowu 2006-01-11
  • 打赏
  • 举报
回复
把出错的代码贴出来看看呢

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧