user-0 提问: 如何将const类型的数组从中间开始取出值给const类型的变量

回复:
user: user-1

user: user-2
content: ptrData = Special_CharInfo_tbl; 这句，还不如你这句： *((CharInfo**)&ptrData) = (const CharInfo*)&Special_CharInfo_tbl[10]； 你当大家都是傻瓜？

user: user-3
content: 引用 20 楼 sholber 的回复:光给分算怎么回事？ 起码说说俺的办法好用不 明显不如12楼好用！

user: user-2
content: 光给分算怎么回事？ 起码说说俺的办法好用不

user: user-3
content: 引用 18 楼 sholber 的回复:[quote=引用 17 楼 zhao4zhong1 的回复:] 电脑内存或文件内容只是一个一维二进制字节数组及其对应的二进制地址； 人脑才将电脑内存或文件内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……  推荐使用WinHex软件查看硬盘或文件或内存中的原始字节内容。 没想到赵丝老湿是用WinHex听音乐看大片的啊……follow u[/quote] 嗯，这样才能看得更深入，更本质嘛！

user: user-2
content: 引用 17 楼 zhao4zhong1 的回复:电脑内存或文件内容只是一个一维二进制字节数组及其对应的二进制地址； 人脑才将电脑内存或文件内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……  推荐使用WinHex软件查看硬盘或文件或内存中的原始字节内容。 没想到赵丝老湿是用WinHex听音乐看大片的啊……follow u

user: user-3
content: 电脑内存或文件内容只是一个一维二进制字节数组及其对应的二进制地址； 人脑才将电脑内存或文件内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……  推荐使用WinHex软件查看硬盘或文件或内存中的原始字节内容。

user: user-3
content: 引用 15 楼 sholber 的回复:屁大个事，争得脸红脖子粗，看，把赵四老湿都急出汗来了。少废话，赶快结帖给分。赵老湿零分！ 不要纠结各种常量了，这个世界上唯一不变的就是变化。用API WriteProcessMemory还能修改正运行的其它进程的内存里面的所谓常量呢！

user: user-2
content: 没见过const数组。你给出一个例子呗。不要告诉我是  const int a [22];  这不是const数组，是const int类型的数组，元素类型是const int。而我需要数组本身是const的。

user: user-0
content: 引用 2 楼 FightForProgrammer 的回复: 引用 3 楼 starytx 的回复: 引用 4 楼 zhao4zhong1 的回复: 引用 5 楼 ForestDB 的回复:  感谢大家的回复，我的描述只是表达了代码的逻辑，实际上的代码很多，所以看起来很乱，const不能去掉，这个ptrData在整个工程里其他地方已经用的很频繁了，它实际上是结构体里面的一个元素，而包括它的结构体又是另一个结构体的元素，且不是const了，所以不需要初始化。  现在我将一个数组拆成两个数组解决了，帖子先留在这，看有没有更好的方法

user: user-0
content: 引用 1 楼 user-7 的回复:你的ptrData是const u8* 类型? 如果是，就这样 ptrData=Special_Char_FillVol5+80仔细看，我的ptrData是const CharInfo*  类型

user: user-4
content: copy一份。

user: user-3
content: 把const去掉！  不要纠结各种常量了，这个世界上唯一不变的就是变化。用API WriteProcessMemory还能修改正运行的其它进程的内存里面的所谓常量呢！

user: user-5
content: 如2楼所说，const要初始化的，要不然之后怎么赋值呢，因为他是const。总之你的描述有点乱

user: user-6
content: const类型定义的时候就给它初始化，要么就不要用const啊。为啥一定要呢。  const CharInfo*     ptrData = ...;定义的时候初始化试试？

user: user-7
content: 你的ptrData是const u8* 类型? 如果是，就这样 ptrData=Special_Char_FillVol5+80

user: user-2
content: 屁大个事，争得脸红脖子粗，看，把赵四老湿都急出汗来了。少废话，赶快结帖给分。赵老湿零分！

user: user-2
content: const CharInfo*     ptrData;  这句，ptrData本身不是const限定的，它指向的类型才是限定的，怎么说ptrData只读呢？不是的。  你想取数组第80个元素的值，那很简单嘛： /*  **以下，数组Special_CharInfo_tbl转换为指向其首元素的指针。即，转换为 **const CharInfo  *。这正好与=运算符左边ptrData的类型一致，可以赋值。 */ ptrData = Special_CharInfo_tbl;   /*  **以下通过ptrData取出数组元素的值，并赋给x。 **表达式ptrData [0]的类型是const CharInfo； **表达式ptrData [0].pData的类型是const u8 *； **表达式ptrData [0].pData [80]的类型是const u8； */ u8 x = ptrData [0].pData [80]; 格式一下，美观美观。

user: user-2
content: 这次才认真看了你的问题。 说实话，没太明白你这题目的意思。 const CharInfo*     ptrData; 这句，ptrData本身不是const限定的，它指向的类型才是限定的，怎么说ptrData只读呢？不是的。 你想取数组第80个元素的值，那很简单嘛： /* **以下，数组Special_CharInfo_tbl转换为指向其首元素的指针。即，转换为 **const CharInfo  *。这正好与=运算符左边ptrData的类型一致，可以赋值。 */ ptrData = Special_CharInfo_tbl;  /* **以下通过ptrData取出数组元素的值，并赋给x。 **表达式ptrData [0]的类型是const CharInfo； **表达式ptrData [0].pData的类型是const u8 *； **表达式ptrData [0].pData [80]的类型是const u8； */ u8 x = ptrData [0].pData [80];

user: user-3
content: *((CharInfo**)&ptrData) = (const CharInfo*)&Special_CharInfo_tbl[10]；