【发布时间】:2021-06-04 14:14:39
【问题描述】:
我试图了解我是否可以解决我遇到的问题,我想添加一个指向堆栈分配数组的数组成员的指针,以便该数组成员可以动态更改。
必须是无符号字符,因为这是一个通讯缓冲区。
int main() {
unsigned char *var;
unsigned char test[] = {*var, 0x34, 0x56, 0x78};
*var = 0x12;
printf("%x %x %x %x %x", *var, test[0],test[1],test[2],test[3]);
*var = 0xff;
printf("%x %x %x %x %x", *var, test[0],test[1],test[2],test[3]);
}
感谢您的任何回答,是或否。
编辑: 感谢所有建议,在尝试找到不同的方法之前,我已经研究过使用数组索引。问题是没有办法知道数组索引,因为正在编辑的数组被连接起来形成一个更大的数组,所以索引发生了变化,这就是我想使用变量的原因。
【问题讨论】:
-
如果你想让
var指向test的某个成员,使用char* var = test + i或char* var = &test[i]。 -
"var" 变量指向堆栈中的某个未知位置。它没有提供可动态调整大小的数组。如果需要,请查看 malloc、calloc、realloc 函数。
-
我不希望数组可以动态调整大小,只有 var 才能改变值,不幸的是我无法访问堆,所以这是我尝试解决这个问题的方法。
-
@Spoons 你看过我的评论了吗?试试看,我很确定应该可以。